/* GVA AI — agenda des événements IA à Genève.
   Layout : grille suisse sobre sur papier bleuté ; un seul élément fort, le tableau d'affichage d'aéroport (GVA) pour le compte à rebours.
   Rouge et jaune des armoiries de Genève ; bleu lac pour les liens. */
:root{
  --paper:#eef2f3; --surface:#ffffff; --surface-2:#f7f9fa; --ink:#13202a; --muted:#53656f; --line:#cfd9de; --line-soft:#e3eaed;
  --red:#c8102e; --on-red:#ffffff; --lake:#17698a;
  --board:#16212a; --board-line:#2a3843; --flap:#22303b; --board-ink:#f4c430; --board-text:#e9eef1; --board-muted:#93a6b1; --board-red:#ff6b7a;
  --ok:#2f7d55;
  --t-conf:#dbe8ef; --t-work:#e6e3f3; --t-course:#efe6d8; --t-meet:#dfeee3; --t-official:#e9e9ea; --t-summit:#f6d9de;
  --font-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --font-body:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
  --font-mono:"Martian Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0e161c; --surface:#15212a; --surface-2:#1a2730; --ink:#e7eef1; --muted:#9aacb7; --line:#273743; --line-soft:#1f2d37;
    --red:#ef5466; --on-red:#1a0508; --lake:#62b5d6;
    --board:#081016; --board-line:#1f2c36; --flap:#121c24; --board-ink:#f4c430; --board-text:#e9eef1; --board-muted:#8699a5; --board-red:#ff7b88;
    --ok:#5fbf8a;
    --t-conf:#1c3340; --t-work:#2a2740; --t-course:#3a2e1c; --t-meet:#1e3627; --t-official:#273038; --t-summit:#4a1d25;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --paper:#0e161c; --surface:#15212a; --surface-2:#1a2730; --ink:#e7eef1; --muted:#9aacb7; --line:#273743; --line-soft:#1f2d37;
  --red:#ef5466; --on-red:#1a0508; --lake:#62b5d6;
  --board:#081016; --board-line:#1f2c36; --flap:#121c24; --board-ink:#f4c430; --board-text:#e9eef1; --board-muted:#8699a5; --board-red:#ff7b88;
  --ok:#5fbf8a;
  --t-conf:#1c3340; --t-work:#2a2740; --t-course:#3a2e1c; --t-meet:#1e3627; --t-official:#273038; --t-summit:#4a1d25;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:1rem;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
:focus-visible{outline:2px solid var(--lake);outline-offset:2px}
.wrap{max-width:1120px;margin-inline:auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* bandeau maquette (version artefact uniquement) */
.mock{background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase}
.mock .wrap{padding-block:.55rem;display:flex;gap:.6rem;align-items:center}
.mock i{width:.5rem;height:.5rem;border-radius:50%;background:var(--board-ink);display:inline-block;flex:none}

/* en-tête */
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:.8rem 1.4rem;flex-wrap:wrap;padding-block:1.1rem}
.mark{font-family:var(--font-display);font-variation-settings:"wdth" 118;font-weight:850;font-size:1.5rem;letter-spacing:-.01em;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;line-height:1}
.mark .key{width:.6rem;height:.6rem;background:var(--red);display:inline-block}
.mark .ai{color:var(--red)}
.top-right{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap}
nav.main{display:flex;gap:1.1rem;flex-wrap:wrap;font-size:.92rem;font-weight:500}
nav.main a{text-decoration:none;color:var(--muted)}
nav.main a:hover{color:var(--ink)}
.lang{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:2px}
.lang button{font:600 .72rem/1 var(--font-mono);letter-spacing:.06em;border:0;background:transparent;color:var(--muted);padding:.45rem .7rem;border-radius:999px;cursor:pointer}
.lang button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}

/* accueil */
.hero .wrap{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,3.5rem);align-items:center;padding-block:clamp(1.25rem,4vw,3.25rem) clamp(1.5rem,3vw,2.5rem)}
.eyebrow{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 1rem}
h1{font-family:var(--font-display);font-variation-settings:"wdth" 112;font-weight:820;font-size:clamp(2.1rem,5.4vw,3.9rem);line-height:1.02;letter-spacing:-.02em;margin:0;text-wrap:balance}
.lead{font-size:clamp(1.02rem,1.6vw,1.15rem);color:var(--muted);max-width:56ch;margin:1.2rem 0 1.4rem}
.stats{display:flex;gap:1.4rem 2rem;flex-wrap:wrap;margin:0 0 1.5rem;padding:0;list-style:none}
.stats li{display:grid;gap:.1rem}
.stats b{font-family:var(--font-display);font-variation-settings:"wdth" 110;font-weight:800;font-size:1.6rem;line-height:1;font-variant-numeric:tabular-nums}
.stats span{font-size:.78rem;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase}
.ctas{display:flex;gap:.75rem;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:.5rem;font:600 .95rem/1.2 var(--font-body);text-decoration:none;padding:.8rem 1.15rem;border-radius:.4rem;border:1px solid var(--ink);cursor:pointer;color:var(--ink);background:transparent}
.btn.primary{background:var(--red);border-color:var(--red);color:var(--on-red)}
.btn.ghost{background:transparent}
.btn.small{padding:.5rem .8rem;font-size:.85rem}

.flap{background:var(--board);color:var(--board-text);border-radius:.6rem;padding:1.1rem 1.2rem 1.2rem;display:grid;gap:.9rem;min-width:0}
.flap-head,.flap-foot{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-family:var(--font-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--board-muted)}
.flap-head b{color:var(--board-ink);font-weight:700}
.chars{display:flex;gap:.22rem;flex-wrap:wrap}
.chars span{font-family:var(--font-mono);font-weight:700;color:var(--board-ink);background:linear-gradient(to bottom,var(--flap) 0 48%,var(--board) 48% 52%,var(--flap) 52% 100%);width:1.5rem;height:2.15rem;display:grid;place-items:center;font-size:1rem;border-radius:.2rem}
.chars.big span{width:clamp(2.3rem,7vw,3.1rem);height:clamp(3.1rem,9vw,4.2rem);font-size:clamp(1.55rem,4.6vw,2.25rem)}
.chars span.sp{background:transparent;width:.45rem}
.flap-next{border-top:1px solid var(--board-line);padding-top:.8rem;display:grid;gap:.2rem;font-size:.85rem}
.flap-next .k{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--board-muted)}
.flap-next a{color:var(--board-text);text-decoration:none;font-weight:600}
.flap-next a:hover{color:var(--board-ink)}
.flap-next small{color:var(--board-muted)}

.notice .wrap{padding-block:0 .25rem}
.notice p{margin:0;font-size:.9rem;color:var(--muted);border-top:1px solid var(--line);padding-top:.9rem;max-width:84ch}
.notice strong{color:var(--ink)}
.notice a{color:var(--lake);font-weight:600}

/* sections */
.block .wrap{padding-block:clamp(2.25rem,5vw,3.75rem)}
.block + .block .wrap{border-top:1px solid var(--line)}
.sec-head{display:grid;gap:.6rem;margin-bottom:1.4rem;max-width:72ch}
h2{font-family:var(--font-display);font-variation-settings:"wdth" 108;font-weight:780;font-size:clamp(1.6rem,3.4vw,2.3rem);line-height:1.08;letter-spacing:-.015em;margin:0;text-wrap:balance}
.sec-head p{margin:0;color:var(--muted)}

/* barre d'outils de l'agenda */
.toolbar{background:var(--paper);border-bottom:1px solid var(--line);margin-bottom:1.2rem}
@media (min-width:821px){.toolbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:5}}
.toolbar .inner{display:grid;gap:.7rem;padding-block:.8rem}
.search{position:relative}
.search input{width:100%;font:inherit;font-size:1rem;padding:.75rem .9rem .75rem 2.4rem;border:1px solid var(--line);border-radius:.5rem;background:var(--surface);color:var(--ink)}
.search svg{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);width:1.05rem;height:1.05rem;color:var(--muted);pointer-events:none}
.chips{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center}
.chips .lbl{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-right:.2rem}
.chip{font:500 .83rem/1 var(--font-body);padding:.5rem .8rem;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.months{display:flex;gap:.3rem;overflow-x:auto;scrollbar-width:none;padding-bottom:.1rem}
.months::-webkit-scrollbar{display:none}
.months a{flex:none;text-decoration:none;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.4rem .6rem;border-radius:.3rem;border:1px solid transparent}
.months a b{color:var(--ink);font-weight:700;margin-left:.3rem}
.months a:hover{border-color:var(--line);color:var(--ink)}
.months a.off{opacity:.4}
.result-line{display:flex;justify-content:space-between;gap:.6rem 1rem;flex-wrap:wrap;align-items:center;font-size:.85rem;color:var(--muted);margin-bottom:.9rem}
.result-line button{font:600 .8rem var(--font-body);border:0;background:transparent;color:var(--lake);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:.15em}

/* liste */
.month{margin-bottom:1.6rem}
.month-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;background:var(--board);color:var(--board-text);border-radius:.5rem;padding:.65rem 1rem;margin-bottom:.5rem;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.72rem}
.month-head b{color:var(--board-ink);font-size:.9rem;font-weight:700}
.month-head span{color:var(--board-muted)}
.evlist{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.evrow{display:grid;grid-template-columns:5.2rem minmax(0,1fr) auto;gap:.2rem 1rem;align-items:start;background:var(--surface);border:1px solid var(--line-soft);border-radius:.5rem;padding:.8rem .95rem;transition:border-color .15s}
.evrow:hover{border-color:var(--line)}
.evrow.past{opacity:.6}
.evrow.today{border-color:var(--red)}
.d{display:grid;gap:.05rem;font-variant-numeric:tabular-nums;line-height:1.15}
.d .wd{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.d .dn{font-family:var(--font-display);font-variation-settings:"wdth" 110;font-weight:800;font-size:1.45rem;letter-spacing:-.01em;line-height:1}
.d .mo{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.d .tm{font-family:var(--font-mono);font-size:.7rem;color:var(--ink);margin-top:.3rem;overflow-wrap:anywhere}
.ev{min-width:0;display:grid;gap:.3rem}
.ev h3{margin:0;font-family:var(--font-body);font-weight:600;font-size:1.02rem;line-height:1.3;text-wrap:pretty}
.ev h3 a{text-decoration:none}
.ev h3 a:hover{color:var(--lake);text-decoration:underline;text-underline-offset:.15em}
.ev .meta{font-size:.86rem;color:var(--muted);display:flex;gap:.3rem .5rem;flex-wrap:wrap;align-items:baseline}
.ev .meta .org{color:var(--ink);font-weight:500}
.ev .desc{font-size:.88rem;color:var(--muted);max-width:72ch;margin:0;text-wrap:pretty}
.ev .tags{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.15rem}
.tag{font-family:var(--font-mono);font-size:.58rem;letter-spacing:.07em;text-transform:uppercase;padding:.28rem .45rem;border-radius:.25rem;background:var(--surface-2);border:1px solid var(--line-soft);color:var(--ink);line-height:1.1;white-space:nowrap}
.tag.conference,.tag.roundtable{background:var(--t-conf)}
.tag.workshop{background:var(--t-work)}
.tag.course{background:var(--t-course)}
.tag.meetup,.tag.hackathon,.tag.exhibition{background:var(--t-meet)}
.tag.meeting{background:var(--t-official)}
.tag.summit{background:var(--t-summit)}
.tag.rtg{background:var(--board);color:var(--board-ink);border-color:var(--board)}
.tag.invitation{border-style:dashed}
.tag.low{color:var(--muted)}
.tag.now{background:var(--red);color:var(--on-red);border-color:var(--red)}
.src{justify-self:end;display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--lake);text-decoration:none;white-space:nowrap;padding:.3rem .2rem}
.src:hover{text-decoration:underline}
.src svg{width:.75rem;height:.75rem}
.empty{padding:1.4rem 1rem;color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:.5rem}

/* séries */
.series-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));gap:.8rem}
.scard{background:var(--surface);border:1px solid var(--line-soft);border-radius:.5rem;padding:1rem;display:grid;gap:.35rem;align-content:start}
.scard h3{margin:0;font-size:1rem;font-weight:600;line-height:1.3}
.scard .org{font-size:.82rem;color:var(--muted)}
.scard p{margin:0;font-size:.88rem;color:var(--muted)}
.scard a{color:var(--lake);font-size:.82rem;font-weight:600;text-decoration:none}
.scard a:hover{text-decoration:underline}

/* dépôt */
.submit-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:clamp(1.5rem,4vw,3rem);align-items:start}
ol.steps{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;gap:1rem;counter-reset:s}
ol.steps li{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.7rem;align-items:baseline;counter-increment:s}
ol.steps li::before{content:counter(s);font-family:var(--font-display);font-variation-settings:"wdth" 110;font-weight:800;font-size:1.4rem;color:var(--red);line-height:1}
.rules{font-size:.88rem;color:var(--muted);margin:0;max-width:48ch}
form.dep{background:var(--surface);border:1px solid var(--line);border-radius:.6rem;padding:clamp(1rem,3vw,1.6rem);display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem}
.field{display:grid;gap:.35rem;min-width:0}
.field.full{grid-column:1/-1}
label{font-size:.8rem;font-weight:600}
input,select,textarea{font:inherit;font-size:.95rem;padding:.65rem .75rem;border:1px solid var(--line);border-radius:.35rem;background:var(--paper);color:var(--ink);width:100%;min-width:0}
textarea{min-height:5rem;resize:vertical}
.hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.form-foot{grid-column:1/-1;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
.form-msg{margin:0;font-size:.88rem;color:var(--muted);flex:1 1 16rem}
.form-msg.ok{color:var(--ok)}
.form-msg.err{color:var(--red)}

/* repères et méthode */
.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.timeline li{display:grid;grid-template-columns:minmax(8.5rem,11rem) minmax(0,1fr);gap:1rem;padding:1rem 0 1rem 1.2rem;position:relative}
.timeline li::before{content:"";position:absolute;left:-.45rem;top:1.3rem;width:.7rem;height:.7rem;border-radius:50%;background:var(--paper);border:2px solid var(--red)}
.timeline li.peak::before{background:var(--red)}
.timeline .when{font-family:var(--font-mono);font-size:.76rem;font-weight:700;letter-spacing:.03em;padding-top:.15rem}
.timeline p{margin:0;max-width:62ch}
.sources{margin-top:1.8rem;display:grid;gap:.5rem;font-size:.95rem}
.sources h3,.about h3{font:600 .7rem/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 .3rem}
.sources a{color:var(--lake);font-weight:600}
.copyline{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.copyline code{font-family:var(--font-mono);font-size:.8rem;user-select:all;background:var(--surface);border:1px solid var(--line);padding:.3rem .5rem;border-radius:.3rem;overflow-wrap:anywhere}
.copyline button{font:600 .78rem var(--font-body);padding:.35rem .7rem;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:.3rem;cursor:pointer}
.about{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.2rem 2rem}
.about p{margin:.2rem 0 0;font-size:.92rem;color:var(--muted);max-width:52ch}

footer .wrap{padding-block:2rem 2.5rem;border-top:1px solid var(--line);display:grid;gap:.7rem;font-size:.88rem;color:var(--muted)}
footer .mark{font-size:1.15rem;color:var(--ink)}
footer p{margin:0;max-width:70ch}

@media (max-width:820px){
  .hero .wrap,.submit-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .evrow{grid-template-columns:4.2rem minmax(0,1fr)}
  .src{grid-column:2;justify-self:start;padding-left:0}
  .d .dn{font-size:1.25rem}
}
@media (max-width:520px){
  form.dep{grid-template-columns:1fr}
  .timeline li{grid-template-columns:1fr;gap:.3rem}
}
@media print{
  .toolbar,.mock,.ctas,form.dep,.lang{display:none}
}

/* programmes regroupés */
.sess{list-style:none;margin:.15rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem}
.sess a{display:inline-block;font-size:.78rem;text-decoration:none;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:.3rem;padding:.25rem .5rem;font-variant-numeric:tabular-nums}
.sess a:hover{border-color:var(--lake);color:var(--lake)}
.sess a.past{opacity:.55}
/* pages d'événement */
.evpage .wrap{padding-block:clamp(1.5rem,4vw,3rem)}
.crumb{font-size:.88rem;margin:0 0 1.2rem}
.crumb a{color:var(--lake);text-decoration:none;font-weight:600}
.evhead{display:grid;gap:.8rem;max-width:72ch}
.evhead h1{font-size:clamp(1.7rem,4.2vw,2.8rem)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.8rem 1.6rem;margin:1.6rem 0;padding:1.2rem;background:var(--surface);border:1px solid var(--line-soft);border-radius:.6rem}
.facts dt{font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:.2rem 0 0;font-weight:500}
.evbody{max-width:68ch;display:grid;gap:1rem}
.evbody p{margin:0}
.evbody .alt{color:var(--muted);font-size:.92rem;border-top:1px solid var(--line);padding-top:1rem}
.evactions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.6rem}
.lang a.langlink{font:600 .72rem/1 var(--font-mono);letter-spacing:.06em;color:var(--muted);padding:.45rem .7rem;border-radius:999px;text-decoration:none}
.lang a.langlink[aria-current]{background:var(--ink);color:var(--paper)}
.evpage .rules{margin-top:1.3rem;max-width:68ch}
.evlist.seo .evrow{grid-template-columns:minmax(0,1fr)}
