.hero-page-photo {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; object-position: center 30%; opacity: .4;
  }
.hero-page .sous {
    margin-top: 20px; max-width: 52ch; font-size: 1.06rem; color: rgba(255,255,255,.85);
    animation: monte .9s cubic-bezier(.22,.61,.36,1) both .6s;
  }
.semaine { padding: 100px 0 40px; }
.semaine-intro { max-width: 60ch; color: var(--pierre); font-size: 1.05rem; line-height: 1.75; margin-bottom: 48px; }
.semaine-strip {
    display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px;
    margin-bottom: 56px;
  }
@media (max-width: 640px) { .semaine-strip { grid-template-columns: repeat(7, 1fr); gap: 5px; } }
.jour-chip {
    text-align: center; padding: 16px 6px; border-radius: 4px;
    border: 1px solid var(--ligne); background: var(--blanc);
  }
.jour-chip.actif { background: var(--ai-deep); border-color: var(--ai-deep); }
.jour-chip .abbr {
    font-family: var(--body); font-size: .72rem; font-weight: 700;
    letter-spacing: .1em; text-transform: uppercase; color: var(--pierre);
  }
.jour-chip.actif .abbr { color: var(--shu-tint); }
.jour-chip .pastille {
    width: 7px; height: 7px; border-radius: 50%; margin: 10px auto 0;
    background: var(--ligne);
  }
.jour-chip.actif .pastille { background: var(--shu); }
@media (max-width: 640px) {
    .jour-chip .abbr { font-size: .64rem; letter-spacing: .04em; }
    .jour-chip { padding: 12px 2px; }
  }
.horaire-cartes {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px;
  }
@media (max-width: 860px) { .horaire-cartes { grid-template-columns: 1fr; max-width: 480px; } }
.h-carte {
    background: var(--blanc); border: 1px solid var(--ligne); border-radius: 6px;
    padding: 34px 30px; position: relative; overflow: hidden;
    display: flex; flex-direction: column;
  }
.h-carte .jour-jp {
    position: absolute; top: 18px; right: 22px;
    font-family: var(--display); font-size: 2.6rem; line-height: 1;
    color: rgba(7,23,40,.06); user-select: none; pointer-events: none;
  }
.h-carte .jour-nom {
    font-family: var(--display); font-weight: 600; font-size: 1.7rem;
    color: var(--sumi); margin-bottom: 4px;
  }
.h-carte .heure {
    display: inline-flex; align-items: center; gap: 8px;
    color: var(--shu); font-weight: 700; font-size: 1rem; letter-spacing: .03em;
    margin-bottom: 24px;
  }
.h-carte .heure svg { width: 17px; height: 17px; fill: none; stroke: var(--shu); stroke-width: 1.8; }
.h-carte .h-sep { height: 1px; background: var(--ligne); margin-bottom: 22px; }
.h-disciplines { display: grid; gap: 12px; margin-top: auto; }
.h-discipline {
    display: flex; align-items: center; gap: 12px;
    text-decoration: none; color: var(--sumi);
    font-weight: 600; font-size: .98rem;
    transition: color .2s;
  }
.h-discipline:hover { color: var(--shu); }
.h-discipline .puce {
    width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0;
    transform: rotate(45deg);
  }
.h-discipline .puce.karate { background: var(--shu); }
.h-discipline .puce.aiki { background: var(--ai-container); }
.h-discipline .puce.iaido { background: var(--shu-tint); }
.h-discipline .fleche { margin-left: auto; color: var(--pierre-clair); transition: transform .2s, color .2s; }
.h-discipline:hover .fleche { transform: translateX(3px); color: var(--shu); }
.fonctionnement {
    background: var(--ai); color: var(--blanc); padding: 80px 0;
    border-top: 3px solid var(--shu); margin-top: 60px;
  }
.fonctionnement .inner { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
@media (max-width: 760px) { .fonctionnement .inner { grid-template-columns: 1fr; gap: 32px; } }
.fonctionnement h2 { color: var(--blanc); }
.fonctionnement .prose { color: rgba(255,255,255,.78); font-size: 1.02rem; line-height: 1.75; }
.fonctionnement .prose p + p { margin-top: 14px; }
.fonctionnement .prose strong { color: var(--blanc); }
.fonctionnement .points { list-style: none; display: grid; gap: 18px; }
.fonctionnement .points li { display: flex; gap: 14px; align-items: flex-start; }
.fonctionnement .points .ic {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
    display: grid; place-items: center;
    border: 1px solid rgba(255,255,255,.2); background: rgba(255,255,255,.04);
  }
.fonctionnement .points .ic svg { width: 19px; height: 19px; fill: none; stroke: var(--shu-tint); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.fonctionnement .points h3 { font-family: var(--display); font-weight: 600; font-size: 1.1rem; color: var(--blanc); margin-bottom: 3px; }
.fonctionnement .points p { font-size: .92rem; color: rgba(255,255,255,.7); }
.lieu { padding: 96px 0; }
.lieu-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
@media (max-width: 860px) { .lieu-inner { grid-template-columns: 1fr; gap: 40px; } }
.lieu .prose { color: var(--pierre); font-size: 1.02rem; line-height: 1.75; }
.lieu .adresse-bloc { margin-top: 26px; display: grid; gap: 16px; }
.lieu .adresse-ligne { display: flex; gap: 14px; align-items: flex-start; }
.lieu .adresse-ligne .ic {
    width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
    display: grid; place-items: center; border: 1px solid var(--ligne); background: var(--washi-2);
  }
.lieu .adresse-ligne .ic svg { width: 18px; height: 18px; fill: none; stroke: var(--shu); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.lieu .adresse-ligne .label { font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--pierre); }
.lieu .adresse-ligne a, .lieu .adresse-ligne .val { color: var(--sumi); text-decoration: none; font-weight: 600; }
.lieu .adresse-ligne a:hover { color: var(--shu); }
.lieu .actions { margin-top: 30px; }
.lieu-carte {
    position: relative; border-radius: 6px; overflow: hidden;
    border: 1px solid var(--ligne); box-shadow: 0 14px 40px rgba(7,23,40,.08);
  }
.lieu-carte iframe { width: 100%; height: 420px; border: 0; display: block; filter: grayscale(.2) contrast(1.02); }
@media (max-width: 860px) { .lieu-carte iframe { height: 320px; } }
