/* ==========================================================================
   OBTURA — Styles propres à la plateforme (après base.css / pages.css)
   ========================================================================== */

/* ---------- Liens texte, pied de page ---------- */
.text-link { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.text-link:hover { text-decoration-thickness: 2px; }
.lang-switch { background: none; border: 0; padding: 0; font: inherit; letter-spacing: inherit; text-transform: inherit; color: var(--ink-soft); cursor: pointer; }
.lang-switch:hover { color: var(--ink); }

/* ==========================================================================
   ACCUEIL (lookbook)
   ========================================================================== */
.lb-hero {
  display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  min-height: calc(100dvh - 69px);
  border-bottom: 1px solid var(--line);
}
.lb-hero__copy {
  display: flex; flex-direction: column; justify-content: center; gap: clamp(22px, 2.6vw, 34px);
  padding: clamp(40px, 6vw, 96px) clamp(16px, 4vw, 72px) clamp(40px, 5vw, 72px) max(var(--gutter), calc((100vw - var(--page-max)) / 2 + var(--gutter)));
}
.lb-hero__title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(56px, 7.6vw, 124px); line-height: 0.92; letter-spacing: -0.005em;
  text-transform: uppercase; text-wrap: balance; max-width: 11ch;
}
.lb-hero__lead { font-size: clamp(16px, 1.25vw, 18px); color: var(--ink-soft); max-width: 44ch; }

.claim { display: grid; gap: 10px; max-width: 600px; }
.claim__label { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-soft); }
.claim__row { display: flex; align-items: stretch; border: 1px solid var(--ink); background: var(--bone); }
.claim__row:focus-within { outline: 1px solid var(--ink); }
.claim__prefix { display: inline-flex; align-items: center; padding: 0 2px 0 16px; font-family: var(--font-nav); font-size: 14px; color: var(--ink-soft); white-space: nowrap; }
.claim__input { flex: 1; min-width: 0; padding: 16px 12px 16px 0; border: 0; background: transparent; font-family: var(--font-nav); font-size: 14px; caret-color: var(--accent); }
.claim__input:focus { outline: none; }
.claim__input::placeholder { color: var(--ink-soft); }
.claim__btn { flex: none; }
.claim__note { font-size: 14px; color: var(--ink-soft); }
@media (max-width: 520px) {
  .claim__row { flex-wrap: wrap; }
  .claim__btn { width: 100%; }
}

.lb-hero__media { position: relative; margin: 0; overflow: hidden; background: var(--paper); min-height: 420px; }
.lb-hero__frame img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0; transform: scale(1.03);
  transition: opacity 1.4s var(--ease), transform 7s linear;
}
.lb-hero__frame img.is-on { opacity: 1; transform: scale(1); }
.lb-hero__caption {
  position: absolute; left: 0; bottom: 0; z-index: 1;
  padding: 10px 14px; background: var(--bone);
  font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
}
.lb-hero__caption a { text-decoration: none; }
.lb-hero__caption a:hover { text-decoration: underline; }

@media (max-width: 900px) {
  .lb-hero { grid-template-columns: 1fr; min-height: 0; }
  .lb-hero__copy { padding: 48px var(--gutter) 40px; }
  .lb-hero__media { aspect-ratio: 4 / 5; min-height: 0; }
}

/* Rangée photo / texte */
.lb-row {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1.1fr) minmax(0, 1fr));
  border-bottom: 1px solid var(--line);
}
.lb-row__img { margin: 0; aspect-ratio: 3 / 4; overflow: hidden; background: var(--paper); }
.lb-row__img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.lb-row__img:hover img { transform: scale(1.03); }
.lb-row__text {
  display: flex; flex-direction: column; gap: 14px;
  padding: clamp(20px, 2.2vw, 34px); border-right: 1px solid var(--line);
}
.lb-row__text:last-child { border-right: 0; }
.lb-row__text h2 { font-family: var(--font-nav); font-weight: 500; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; }
.lb-row__text p { font-size: 15px; color: var(--ink-soft); max-width: 26ch; }
@media (max-width: 1100px) { .lb-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .lb-row__text { border-right: 0; border-bottom: 1px solid var(--line); } }
@media (max-width: 560px) { .lb-row { grid-template-columns: 1fr; } .lb-row__img { aspect-ratio: 4 / 3; } }

/* Manifeste */
.lb-zero {
  max-width: var(--page-max); margin: 0 auto;
  padding: clamp(80px, 12vw, 180px) var(--gutter);
  display: grid; justify-items: center; text-align: center; gap: 28px;
}
.lb-zero__title {
  font-family: var(--font-display); font-weight: 400; text-transform: uppercase;
  font-size: clamp(60px, 12vw, 190px); line-height: 0.88; letter-spacing: -0.01em;
}
.lb-zero__text { max-width: 54ch; font-size: clamp(16px, 1.3vw, 19px); color: var(--ink-soft); }

/* Aperçu de boutique */
.lb-preview {
  max-width: var(--page-max); margin: 0 auto; padding: 0 var(--gutter);
  display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(32px, 5vw, 80px); align-items: center;
}
.lb-preview__copy { display: grid; gap: 22px; }
.lb-preview__url { font-family: var(--font-nav); font-size: 14px; color: var(--ink-soft); word-break: break-all; }
.lb-preview__url strong { color: var(--ink); font-weight: 500; }
.lb-preview__shop { border: 1px solid var(--line); padding: clamp(24px, 3vw, 44px); background: var(--bone); }
.mini-cross { list-style: none; display: flex; justify-content: center; align-items: stretch; position: relative; margin-bottom: 26px; }
.mini-cross::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--ink); }
.mini-cross li {
  position: relative; display: flex; align-items: center; padding: 0 clamp(8px, 1.2vw, 18px) 8px;
  font-family: var(--font-nav); font-size: clamp(8px, 0.7vw, 10px); letter-spacing: 0.14em; white-space: nowrap;
}
.mini-cross li:not(:last-child)::after { content: ''; position: absolute; right: 0; top: -4px; bottom: -6px; width: 1px; background: var(--ink); }
.mini-cross__name { font-family: var(--font-display) !important; font-size: clamp(22px, 2.6vw, 38px) !important; letter-spacing: 0.02em !important; text-transform: uppercase; max-width: 14ch; overflow: hidden; text-overflow: ellipsis; }
.mini-mosaic { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: repeat(2, clamp(90px, 10vw, 160px)); gap: 8px; }
.mini-mosaic span { overflow: hidden; background: var(--paper); }
.mini-mosaic span:first-child { grid-row: span 2; }
.mini-mosaic img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 900px) { .lb-preview { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .mini-cross li:not(.mini-cross__name) { display: none; } .mini-cross::after { display: none; } }

/* Annuaire (accueil) + fin */
.lb-dir { max-width: var(--page-max); margin: 0 auto; padding: clamp(80px, 10vw, 150px) var(--gutter) 0; }
.lb-dir__head { display: flex; justify-content: space-between; align-items: end; gap: 16px; flex-wrap: wrap; margin-bottom: 28px; }
.lb-end {
  max-width: var(--page-max); margin: 0 auto; padding: clamp(90px, 12vw, 170px) var(--gutter);
  display: flex; justify-content: space-between; align-items: end; gap: 28px; flex-wrap: wrap;
}
.lb-end__title { font-family: var(--font-display); font-weight: 400; text-transform: uppercase; font-size: clamp(48px, 7vw, 110px); line-height: 0.92; }

/* Accueil : apparition douce à l'ouverture (déjà visible sans animation) */
@media (prefers-reduced-motion: no-preference) {
  .lb-hero__copy > * { animation: rise 1s var(--ease) both; }
  .lb-hero__copy > :nth-child(2) { animation-delay: 0.08s; }
  .lb-hero__copy > :nth-child(3) { animation-delay: 0.16s; }
  .lb-hero__media { animation: unveil 1.4s var(--ease) both; }
}
@keyframes rise { from { opacity: 0; transform: translateY(14px); } }
@keyframes unveil { from { clip-path: inset(0 0 0 100%); } to { clip-path: inset(0 0 0 0); } }

/* ==========================================================================
   OFFRES
   ========================================================================== */
.billing-toggle { margin: 6px 0 32px; }
.plans { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); }
.plan { display: flex; flex-direction: column; gap: 18px; padding: clamp(22px, 2.2vw, 32px); border: 0 !important; border-right: 1px solid var(--line) !important; }
.plan:last-child { border-right: 0 !important; }
.plan--featured { background: var(--ink); color: var(--bone); outline: 0; }
.plan--featured .plan__name, .plan--featured .plan__price small, .plan--featured .plan__old, .plan--featured .plan__list li.is-off { color: rgba(244, 244, 241, 0.62); }
[data-theme="dark"] .plan--featured .plan__name, [data-theme="dark"] .plan--featured .plan__price small, [data-theme="dark"] .plan--featured .plan__old, [data-theme="dark"] .plan--featured .plan__list li.is-off { color: rgba(17, 17, 17, 0.6); }
.plan--featured .btn--primary { background: var(--bone); color: var(--ink); }
.plan--featured .btn--primary:hover { background: var(--paper); }
.plan__name { font-family: var(--font-nav); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-soft); }
.plan__price { font-family: var(--font-display); font-size: clamp(44px, 4vw, 60px); line-height: 1; min-height: 1.1em; }
.plan__price small { font-family: var(--font-nav); font-size: 12px; letter-spacing: 0.08em; color: var(--ink-soft); margin-left: 6px; }
.plan__old { font-family: var(--font-nav); font-size: 16px; color: var(--ink-soft); text-decoration-thickness: 1px; margin-right: 6px; vertical-align: middle; }
.plan__list { list-style: none; display: grid; gap: 10px; font-size: 15px; flex: 1; padding-top: 18px; border-top: 1px solid rgba(127, 127, 127, 0.3); }
.plan__list li { display: flex; gap: 10px; align-items: baseline; }
.plan__list li::before { content: ''; flex: none; width: 10px; height: 1px; background: currentColor; transform: translateY(-4px); }
.plan__list li.is-off { color: var(--ink-soft); text-decoration: line-through; text-decoration-thickness: 1px; }
.plans-note { margin-top: 20px; color: var(--ink-soft); font-size: 14px; max-width: 70ch; }
@media (max-width: 1100px) { .plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } .plan:nth-child(2) { border-right: 0 !important; } .plan:nth-child(-n+2) { border-bottom: 1px solid var(--line) !important; } }
@media (max-width: 600px) { .plans { grid-template-columns: 1fr; } .plan { border-right: 0 !important; border-bottom: 1px solid var(--line) !important; } }

/* ---------- Champ adresse de boutique ---------- */
.slug-field { display: flex; align-items: stretch; }
.slug-field__prefix {
  display: inline-flex; align-items: center; padding: 0 12px;
  border: 1px solid var(--line); border-right: 0;
  background: var(--paper); color: var(--ink-soft); font-family: var(--font-nav); font-size: 13px; white-space: nowrap;
}
.slug-field .input { min-width: 0; font-family: var(--font-nav); font-size: 14px; }
.slug-status { font-size: 12px; font-family: var(--font-nav); letter-spacing: 0.06em; min-height: 1.3em; }
.slug-status[data-state="ok"] { color: var(--success); }
.slug-status[data-state="bad"] { color: var(--danger); }
@media (max-width: 480px) { .slug-field__prefix { font-size: 11px; padding: 0 8px; } }

/* ---------- Puces de sélection (spécialités) ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { position: relative; }
.chip input { position: absolute; opacity: 0; pointer-events: none; }
.chip span {
  display: inline-block; padding: 9px 13px; border: 1px solid var(--line);
  font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.chip span:hover { border-color: var(--ink); }
.chip input:checked + span { background: var(--ink); color: var(--bone); border-color: var(--ink); }
.chip input:focus-visible + span { outline: 1px solid var(--ink); outline-offset: 2px; }

/* ==========================================================================
   STUDIO
   ========================================================================== */
.studio-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); margin-bottom: 24px; }
.studio-stat { padding: 22px 24px; display: grid; gap: 8px; align-content: start; border: 0 !important; border-right: 1px solid var(--line) !important; }
.studio-stat:last-child { border-right: 0 !important; }
.studio-stat__label { font-family: var(--font-nav); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); }
.studio-stat__value { font-family: var(--font-display); font-size: 40px; line-height: 1; }
.studio-stat__sub { font-size: 13px; color: var(--ink-soft); }
.studio-stat a { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 1000px) { .studio-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .studio-stat:nth-child(2) { border-right: 0 !important; } .studio-stat:nth-child(-n+2) { border-bottom: 1px solid var(--line) !important; } }
@media (max-width: 520px) { .studio-grid { grid-template-columns: 1fr; } .studio-stat { border-right: 0 !important; border-bottom: 1px solid var(--line) !important; } }

/* Jauge : trait fin */
.meter { height: 3px; background: var(--paper); overflow: hidden; margin-top: 6px; }
.meter__bar { height: 100%; background: var(--ink); transition: width var(--t); }
.meter[data-level="warn"] .meter__bar { background: var(--warn); }
.meter[data-level="full"] .meter__bar { background: var(--danger); }

.status-banner { padding: 16px 20px; margin-bottom: 20px; font-size: 15px; border: 1px solid currentColor; }
.status-banner--danger { color: var(--danger); }
.status-banner--info { color: var(--accent); }

.shop-url { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.shop-url code { font-family: var(--font-nav); font-size: 13px; padding: 7px 12px; background: var(--paper); }

.studio-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; }
@media (max-width: 1000px) { .studio-layout { grid-template-columns: 1fr; } }

/* ---------- Connexion ---------- */
.auth-links { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 14px; }
.auth-links button { background: none; border: 0; padding: 0; font: inherit; color: var(--ink-soft); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.auth-links button:hover { color: var(--ink); }
.form-success { padding: 14px 18px; border: 1px solid var(--success); color: var(--success); font-size: 15px; }

/* ==========================================================================
   ANNUAIRE
   ========================================================================== */
.dir-filters { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 0; padding: 0 !important; margin-bottom: 32px; border: 1px solid var(--ink) !important; }
.dir-filters .input { border: 0; border-right: 1px solid var(--line); }
.dir-filters > :last-child, .dir-filters > :last-child .input { border-right: 0; }
@media (max-width: 760px) { .dir-filters { grid-template-columns: 1fr; } .dir-filters .input { border-right: 0; border-bottom: 1px solid var(--line); } }

.shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 40px 24px; }
.shop-card { display: flex; flex-direction: column; padding: 0 !important; border: 0 !important; overflow: visible; text-decoration: none; }
.shop-card__cover { aspect-ratio: 4 / 5; background: var(--paper); overflow: hidden; display: block; }
.shop-card__cover img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s var(--ease); }
.shop-card:hover .shop-card__cover img { transform: scale(1.03); }
.shop-card__body { display: grid; gap: 4px; padding: 14px 0 0; position: relative; }
.shop-card__logo { position: absolute; top: -26px; right: 12px; width: 52px; height: 52px; border-radius: 50%; object-fit: cover; border: 3px solid var(--bone); background: var(--bone); }
.shop-card__name { font-family: var(--font-display); font-size: 30px; line-height: 1; text-transform: uppercase; }
.shop-card:hover .shop-card__name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.shop-card__meta { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); }
.shop-card__tagline { color: var(--ink-soft); font-size: 14px; }

/* ==========================================================================
   BOUTIQUE (style PICX, version lookbook)
   ========================================================================== */
:root { --shop-accent: var(--ink); }
.shop-header { max-width: var(--page-max); margin: 0 auto; padding: 22px var(--gutter); display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.shop-header__home { font-family: var(--font-display); font-size: 28px; text-decoration: none; }
.shop-header__nav { display: flex; gap: 22px; font-family: var(--font-nav); }
.shop-header__nav a { text-decoration: none; color: var(--ink-soft); }
.shop-header__nav a:hover { color: var(--ink); }
.shop-hero { position: relative; overflow: hidden; margin-bottom: 28px; }
.shop-hero__cover { position: absolute; inset: 0; background-size: cover; background-position: center; }
.shop-hero.has-cover { min-height: 460px; display: flex; align-items: flex-end; }
.shop-hero.has-cover::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(17,17,17,0) 40%, rgba(17,17,17,.7)); }
.shop-hero__body { position: relative; z-index: 1; display: flex; gap: 22px; align-items: flex-end; padding: clamp(20px, 4vw, 44px) 0; }
.shop-hero.has-cover .shop-hero__body { padding: clamp(20px, 4vw, 44px); color: #fff; }
.shop-hero.has-cover .lead, .shop-hero.has-cover .eyebrow { color: rgba(255,255,255,.85); }
.shop-hero__logo { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; flex: none; border: 3px solid var(--bone); background: var(--bone); }
@media (max-width: 640px) { .shop-hero__body { flex-direction: column; align-items: flex-start; } .shop-hero__logo { width: 72px; height: 72px; } }
.shop-about { max-width: 860px; }
.shop-legal { font-size: 13px; }
.powered-by { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; text-decoration: none; color: var(--ink-soft); }
.powered-by strong { font-family: var(--font-display); font-weight: 400; font-size: 18px; letter-spacing: 0.04em; color: var(--ink); }

.nav-item.logo .shop-name-link.is-long { font-size: clamp(36px, 3.8vw, 58px) !important; }
.nav-item.logo .shop-name-link.is-xlong { font-size: clamp(28px, 2.8vw, 42px) !important; white-space: normal; text-align: center; max-width: 380px; line-height: 1; }

.shop-home { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(28px, 5vw, 80px); align-items: center; padding-top: 24px; }
.shop-home__intro { display: grid; gap: 20px; align-content: center; }
.shop-home__intro .title-l { margin-top: 0; text-transform: uppercase; }
.shop-mosaic { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: clamp(110px, 12vw, 190px); gap: 8px; }
.shop-mosaic .tile[data-featured="true"] { grid-column: span 2; grid-row: span 2; }
@media (max-width: 900px) { .shop-home { grid-template-columns: 1fr; } }

.shop-about__grid { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.shop-about__photo { width: 220px; height: 280px; object-fit: cover; }
.shop-about__bio { white-space: pre-line; font-size: 17px; line-height: 1.7; max-width: 62ch; }
@media (max-width: 640px) { .shop-about__grid { grid-template-columns: 1fr; } .shop-about__photo { width: 160px; height: 200px; } }
.contact-list { list-style: none; display: grid; gap: 0; }
.contact-list li { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 15px; }
.contact-list li:last-child { border-bottom: 0; }
.contact-list svg { width: 16px; height: 16px; color: var(--ink-soft); flex: none; }
.contact-list a { text-decoration: none; }
.contact-list a:hover { text-decoration: underline; }

/* Cartes de galerie : photo puis légende dessous (plus de bandeau flouté) */
.events-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 44px 24px; }
.event-card {
  aspect-ratio: auto; display: grid; grid-template-rows: auto auto;
  background: none; box-shadow: none; overflow: hidden; text-decoration: none; color: var(--ink);
}
.event-card:hover { transform: none; box-shadow: none; }
.event-card::before { content: ''; grid-area: 1 / 1; aspect-ratio: 4 / 5; background: var(--paper); }
.event-card__cover { position: relative; inset: auto; grid-area: 1 / 1; aspect-ratio: 4 / 5; height: auto; z-index: 0; }
.event-card[data-visibility="private"] .event-card__cover { filter: blur(16px) saturate(105%); transform: none; }
.event-card__info {
  position: static; grid-row: 2; padding: 14px 0 0; background: none; border: 0; backdrop-filter: none; -webkit-backdrop-filter: none;
  align-items: flex-start;
}
.event-card__title { font-family: var(--font-display); font-size: 30px; line-height: 1; text-transform: uppercase; }
.event-card__meta { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; margin-top: 8px; }
.event-card__arrow { width: 36px; height: 36px; background: none; color: var(--ink); border: 1px solid var(--line); transition: background var(--t-fast), color var(--t-fast); }
.event-card:hover .event-card__arrow { background: var(--ink); color: var(--bone); }
.event-card:hover .event-card__title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
.event-card__flag { top: 12px; left: 12px; }
.event-card.skeleton { aspect-ratio: 4 / 5; }

/* ==========================================================================
   PANIER, STUDIO : divers
   ========================================================================== */
.cart-groups { display: grid; gap: 24px; max-width: 900px; }
.cart-group { display: grid; gap: 14px; }
.cart-group__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.cart-group__head a { text-decoration: none; }

.st-gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 24px; }
.studio-nav button[hidden] { display: none; }
.brand-slot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.brand-slot img { width: 84px; height: 84px; object-fit: cover; background: var(--paper); }
[data-slot="cover"] img { width: 160px; height: 90px; }
.qe-line { display: grid; grid-template-columns: minmax(0, 1fr) 80px 130px auto; gap: 8px; align-items: center; }
@media (max-width: 560px) { .qe-line { grid-template-columns: 1fr 70px; } .qe-line .price-input { grid-column: 1; } }
.plan-editor .input { padding: 8px 10px; font-size: 14px; }
.plan-editor td { vertical-align: middle; }
.client-alert svg { width: 18px; height: 18px; flex: none; }

/* ---------- Pages légales FR / EN ---------- */
html[lang="fr"] [data-lang-block="en"], html[lang="en"] [data-lang-block="fr"] { display: none; }
.legal { max-width: 760px; padding: 0 !important; border: 0 !important; }
.legal h2 { font-family: var(--font-nav); font-weight: 500; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; margin: 44px 0 14px; padding-top: 18px; border-top: 1px solid var(--line); }
.legal h2:first-child { margin-top: 0; }
.legal p, .legal li { font-size: 16px; line-height: 1.7; color: var(--ink-soft); }
.legal p + p { margin-top: 10px; }
.legal ul { padding-left: 20px; margin: 8px 0; display: grid; gap: 6px; }
.legal a { color: var(--ink); }
.legal .legal__updated { margin-top: 40px; font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; }
.legal-nav { margin-bottom: 36px; }

/* ---------- Mot de passe ---------- */
.pwd-field { position: relative; }
.pwd-field .input { width: 100%; padding-right: 52px; }
.pwd-field__eye { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; display: grid; place-items: center; border: 0; background: none; color: var(--ink-soft); cursor: pointer; }
.pwd-field__eye svg { width: 18px; height: 18px; }
.pwd-field__eye[aria-pressed="true"] { color: var(--ink); }
.pwd-rules { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; padding: 0; }
.pwd-rules li { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.06em; color: var(--ink-soft); background: none !important; padding: 0; display: inline-flex; align-items: center; gap: 6px; }
.pwd-rules li::before { content: ''; width: 9px; height: 9px; border: 1px solid currentColor; }
.pwd-rules li.is-ok { color: var(--success); }
.pwd-rules li.is-ok::before { background: currentColor; }

/* ---------- Studio : profil + outils photo ---------- */
.avatar-slot { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.avatar-slot__img { width: 112px; height: 112px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: var(--paper); color: var(--ink-soft); flex: none; }
.avatar-slot__img img { width: 100%; height: 100%; object-fit: cover; }
.avatar-slot__img svg { width: 40px; height: 40px; }
.mcard__row--tools { margin-top: 8px; gap: 6px; }
.mcard__tool { flex: 1; min-height: 34px; padding: 7px 8px; font-size: 10px; gap: 4px; justify-content: center; }
.mcard__tool svg { width: 14px; height: 14px; }
.mcard__tool.is-on { background: var(--ink); color: var(--bone); box-shadow: none; }

/* ==========================================================================
   Alignement des boutons (toutes les pages)
   ========================================================================== */
[data-icon] { display: inline-flex; align-items: center; justify-content: center; }
.btn > span { display: inline-flex; align-items: center; }
.btn--sm { min-height: 36px; padding: 9px 14px; font-size: 11px; }
.actions-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.actions-row .muted { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.06em; }
.req__actions { align-items: center; }
.req__actions .btn, .req__actions .icon-btn { flex: none; }
.gallery-bar__main { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.admin-tabs { margin: 20px 0; }
.admin-tabs button { display: inline-flex; align-items: center; gap: 6px; }
.admin-tabs button svg { width: 14px; height: 14px; }

/* ---------- Statistiques : libellé, valeur, détail empilés ---------- */
.kpi { display: flex; flex-direction: column; gap: 4px; }
.kpi__value { margin-top: 2px; }
.kpis { margin-bottom: 4px; }
.doc-table th, .doc-table td { padding-left: 10px; padding-right: 10px; vertical-align: middle; }
.doc-table th:first-child, .doc-table td:first-child { padding-left: 0; }
.doc-table th:last-child, .doc-table td:last-child { padding-right: 0; }
.doc-table th.num { text-align: right; }
.line-item__price { text-align: right; white-space: nowrap; }

/* ---------- Studio : liste des galeries ---------- */
.st-gallery { display: grid; gap: 10px; align-content: start; }
.st-gallery__actions .btn { min-height: 38px; padding: 10px 14px; font-size: 11px; }
.st-gallery__actions .btn svg { width: 14px; height: 14px; }

/* ---------- Fidélité ---------- */
.loyalty-box { display: grid; gap: 10px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.loyalty-box__row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; }
.loyalty-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 28px; border: 1px solid var(--line); }
.loyalty-tier { display: grid; gap: 2px; position: relative; border: 0 !important; border-right: 1px solid var(--line) !important; }
.loyalty-tier:last-child { border-right: 0 !important; }
.loyalty-tier__step { display: none; }
.loyalty-tier__value { font-family: var(--font-display); font-size: clamp(54px, 5vw, 80px); line-height: 1; margin-top: 18px; }
.loyalty-tier__value--sm { font-size: clamp(34px, 3vw, 46px); margin-top: 18px; }
@media (max-width: 760px) { .loyalty-grid { grid-template-columns: 1fr; } .loyalty-tier { border-right: 0 !important; border-bottom: 1px solid var(--line) !important; } }

/* ---------- Galerie générale ---------- */
.explore-tile { position: relative; display: block; text-decoration: none; }
.explore-tile__by {
  position: absolute; left: 0; bottom: 0; padding: 8px 12px;
  display: grid; gap: 2px; background: var(--bone); color: var(--ink);
  font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase;
  opacity: 0; transform: translateY(4px); transition: opacity var(--t-fast), transform var(--t-fast);
}
.explore-tile__by strong { font-weight: 500; }
.explore-tile:hover .explore-tile__by, .explore-tile:focus-visible .explore-tile__by { opacity: 1; transform: none; }
@media (hover: none) { .explore-tile__by { opacity: 1; transform: none; } }

/* ==========================================================================
   Composants des autres feuilles, réaccordés à l'univers
   ========================================================================== */
/* Mur photo : coins droits, pas de soulèvement */
.bento { gap: 8px; }
.tile:hover { transform: none; box-shadow: none; }
.tile:hover img { transform: scale(1.025); }
.status-icon { background: var(--bone); border: 0; backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: none; }
.status-icon--owned { background: var(--ink); color: var(--bone); }
.status-icon--cart { background: var(--accent); color: #fff; }
.status-icon--free { background: var(--success); color: #fff; }
.tile__check { box-shadow: none; }
.tile.is-selected { box-shadow: 0 0 0 2px var(--ink); transform: none; }
.tile__video { background: var(--ink); color: var(--bone); backdrop-filter: none; -webkit-backdrop-filter: none; letter-spacing: 0.08em; }
.select-bar { background: var(--bone); border: 1px solid var(--ink); backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: var(--shadow-lift); }
.select-bar__count { font-family: var(--font-nav); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; }

/* Visionneuse */
.viewer__backdrop { background: rgba(17, 17, 17, 0.82); backdrop-filter: none; -webkit-backdrop-filter: none; }
.viewer__ambient { display: none; }
.viewer__frame { box-shadow: none; }
.viewer__panel { background: var(--bone); }
.viewer__filename { font-family: var(--font-nav); font-size: 13px; letter-spacing: 0.06em; line-height: 1.4; }
.exif__row { font-size: 14px; }
.exif dd { font-weight: 500; font-family: var(--font-nav); font-size: 13px; }
.action-line__icon { width: 40px; height: 40px; background: var(--paper); }
.action-line__title { font-family: var(--font-display); font-size: 32px; line-height: 1; }
.action-line__sub { font-size: 13px; }
.viewer__close, .viewer__nav { background: var(--bone); border: 0; backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: none; }
.viewer__close:hover, .viewer__nav:hover { transform: none; background: var(--ink); color: var(--bone); }
.viewer__counter, .viewer__preview-badge { background: var(--bone); color: var(--ink); backdrop-filter: none; -webkit-backdrop-filter: none; letter-spacing: 0.08em; }
@media (max-width: 820px) { .viewer__panel { margin-top: 0; } }

/* Studio : onglets, demandes, chiffres */
.studio-nav { border-bottom: 1px solid var(--line); gap: 26px; margin-bottom: 32px; }
.studio-nav button { padding: 16px 0; font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; }
.studio-nav button + button::before { display: none; }
.studio-nav button[aria-current="page"]::after { left: 0; right: 0; bottom: -1px; height: 1px; background: var(--ink); }
.count-badge { min-width: 18px; height: 18px; padding: 0 5px; font-family: var(--font-nav); font-size: 10px; }
.req { background: transparent; border: 1px solid var(--line); }
.req.is-unread { border-left-width: 1px; outline: 1px solid var(--ink); outline-offset: -1px; }
.req__title { font-family: var(--font-title); font-weight: 500; font-size: 17px; }
.req__meta { font-size: 13px; }
.req__note { background: var(--paper); font-size: 15px; }
.req__price, .line-item__price, .summary__total strong, .estimate__total strong, .qe-total strong, .doc-table tfoot .grand, .kpi__value, .stat__value, .pack__tokens, .range-row output {
  font-family: var(--font-display); font-weight: 400;
}
.kpis { gap: 0; border: 1px solid var(--line); }
.kpi { background: transparent; border: 0; border-right: 1px solid var(--line); }
.kpi:last-child { border-right: 0; }
.kpi__value { font-size: 44px; }
.kpi__label, .stat__label { font-size: 10.5px; letter-spacing: 0.14em; }
.gbar__track { height: 3px; }
.gbar__fill { background: var(--ink); }
.line-item { background: transparent; border-bottom: 1px solid var(--line); padding: 14px 0; }
.line-item__name, .owned-card__name, .qrow__name, .mcard__name { font-family: var(--font-title); font-weight: 500; }
.line-item__name { font-size: 15px; }
.owned-card, .contract-row, .pack, .qrow, .stat { background: transparent; border: 1px solid var(--line); }
.mcard { background: transparent; border: 1px solid var(--line); }
.mcard.is-selected { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
.mcard__name { font-size: 13px; }
.pack:hover, .contract-row:hover { background: var(--paper); transform: none; }
.dropzone { border: 1px dashed var(--ink); background: transparent; min-height: 320px; }
.dropzone:hover, .dropzone.is-over { background: var(--paper); transform: none; }
.dropzone__icon { width: 64px; height: 64px; }
.qrow__ext { background: var(--paper); }
.progress { height: 3px; }
.share-box, .qe-message, .token-callout, .doc__note { background: var(--paper); }
.doc { background: var(--bone); border: 1px solid var(--line); box-shadow: none; }
.doc__logo { font-family: var(--font-display); text-transform: uppercase; }
.doc__head, .estimate__total, .summary__total, .qe-total { border-color: var(--ink); border-top-width: 1px; }
.doc__head { border-bottom-width: 1px; }
.sign-pad { border: 1px dashed var(--ink); background: #fff; }
.signed-stamp { background: transparent; border: 1px solid var(--success); }
.client-alert { background: var(--ink); color: var(--bone); font-size: 15px; }
.client-alert:hover { transform: none; background: var(--accent); }
.client-alert--soft { background: transparent; color: var(--ink); border: 1px solid var(--line); }
.cart-notice { background: transparent; border: 1px solid var(--danger); }
.cart-notice strong { font-family: var(--font-title); font-weight: 500; font-size: 17px; }
.account-card { border: 1px solid var(--line); }
.account-card__who strong { font-family: var(--font-title); font-weight: 500; font-size: 17px; }
.status-dot::before { border-radius: 0; width: 7px; height: 7px; }
.admin-bar { background: var(--bone); backdrop-filter: none; -webkit-backdrop-filter: none; border-bottom: 1px solid var(--line); }
.admin-bar__logo { font-family: var(--font-display); text-transform: uppercase; font-size: 34px; }
.admin-bar__who { font-family: var(--font-nav); font-size: 12px; letter-spacing: 0.08em; }
.dash__card:hover { transform: none; box-shadow: none; border-color: var(--ink); }
.dash__card--ink { background: var(--ink); color: var(--bone); }
.dash__n { font-family: var(--font-nav); font-size: 14px; }
.switch__track::after { box-shadow: none; }
.price-input .input { font-family: var(--font-nav); font-size: 18px; }


/* ==========================================================================
   ABONNEMENTS & NOTIFICATIONS
   ========================================================================== */
/* Bandeau du photographe sous l'en-tête en croix */
.shop-bar {
  max-width: var(--page-max); margin: 0 auto clamp(20px, 3vw, 36px); padding: 0 var(--gutter);
  display: flex; align-items: center; justify-content: center; gap: 12px 22px; flex-wrap: wrap;
}
.shop-bar__who { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.shop-bar__avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: var(--paper); }
.shop-bar__name { font-family: var(--font-display); font-size: clamp(26px, 2.6vw, 36px); line-height: 1; text-transform: uppercase; }
.shop-bar__who:hover .shop-bar__name, .shop-bar__who[aria-current="page"] .shop-bar__name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
.shop-bar__count { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-soft); }
.shop-bar__actions { display: inline-flex; align-items: center; gap: 6px; }
.shop-bar__bell { border: 1px solid var(--line); width: 36px; height: 36px; }
.shop-bar__bell[aria-pressed="true"] { border-color: var(--ink); }

/* Panneau de la cloche */
.bell-panel {
  position: fixed; right: 20px; bottom: 76px; z-index: 1200;
  width: min(400px, calc(100vw - 32px)); max-height: min(70vh, 560px);
  display: flex; flex-direction: column;
  background: var(--bone); border: 1px solid var(--ink); box-shadow: var(--shadow-lift);
  animation: toast-in 0.3s var(--ease);
}
.bell-panel__head { display: flex; align-items: center; justify-content: space-between; padding: 6px 6px 6px 18px; border-bottom: 1px solid var(--line); }
.bell-panel__head h2 { font-family: var(--font-nav); font-weight: 500; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; }
.bell-panel__list { overflow-y: auto; }
.bell-panel__empty { padding: 28px 18px; color: var(--ink-soft); font-size: 14px; }
.bell-panel__foot { padding: 14px 18px; border-top: 1px solid var(--line); font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; text-decoration: none; }
.bell-panel__foot:hover { background: var(--paper); }
.bell-item { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 14px; align-items: center; padding: 12px 18px; text-decoration: none; border-bottom: 1px solid var(--line); }
.bell-item:hover { background: var(--paper); }
.bell-item.is-unread { box-shadow: inset 2px 0 0 var(--ink); }
.bell-item__img { width: 56px; height: 56px; background: var(--paper); overflow: hidden; }
.bell-item__img img { width: 100%; height: 100%; object-fit: cover; }
.bell-item__text { font-size: 14px; line-height: 1.4; }
.bell-item__text small { display: block; margin-top: 4px; font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); }

/* Annuaire : tri + nombre d'abonnés */
.dir-sort { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin: -12px 0 32px; }
.dir-sort .label { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-soft); }
.shop-card__stats { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink); }

/* Offres : badge « la plus populaire » */
.plan__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.plan__popular { font-family: var(--font-nav); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; padding: 5px 8px; border: 1px solid currentColor; }

/* Listes abonnés / abonnements */
.people { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); border-top: 1px solid var(--line); }
.people__row { display: flex; align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); min-width: 0; }
.people__avatar { flex: none; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; background: var(--paper); display: grid; place-items: center; color: var(--ink-soft); }
.people__avatar svg { width: 20px; height: 20px; }
.people__who { flex: 1; min-width: 0; display: grid; gap: 2px; }
.people__who strong { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.people__who a { text-decoration: none; }
.people__who small { font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); }

/* Mention droit d'auteur (pied de page) */
.copyright-note { grid-column: 1 / -1; font-family: var(--font-body); text-transform: none; letter-spacing: 0; font-size: 13px; color: var(--ink-soft); }
/* Annuaire : code d'événement */
.dir-code-hint { margin: -20px 0 28px; }
.code-results { display: grid; gap: 0; margin: -12px 0 32px; border-top: 1px solid var(--line); }
.code-results .field-hint { padding: 12px 0; }
.code-results__item { display: flex; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.code-results__item strong { font-weight: 500; }
.code-results__item span { font-family: var(--font-nav); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); }
.code-results__item:hover strong { text-decoration: underline; text-underline-offset: 4px; }
/* RGPD : mention d'information sous les formulaires, champs facultatifs */
.privacy-note { font-size: 12.5px; line-height: 1.55; color: var(--ink-soft); max-width: 70ch; }
.privacy-note a { color: var(--ink); }
label[data-optional]::after { content: ' (facultatif)'; text-transform: none; letter-spacing: 0; opacity: 0.75; }
html[lang="en"] label[data-optional]::after { content: ' (optional)'; }
/* ==========================================================================
   AIDE ET IDÉES (tickets + boîte à idées)
   ========================================================================== */
/* Petit onglet fixe, bas gauche (la pastille compte est en bas à droite) */
.fb-launch {
  position: fixed; left: 20px; bottom: 20px; z-index: 890;
  padding: 11px 14px; background: var(--bone); color: var(--ink);
  border: 1px solid var(--ink); text-decoration: none;
  font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase;
  transition: background var(--t-fast), color var(--t-fast);
}
.fb-launch:hover { background: var(--ink); color: var(--bone); }
body.is-selecting .fb-launch { display: none; }
/* Petit écran : languette verticale au bord gauche (le bas est occupé par la pastille compte) */
@media (max-width: 700px) {
  .fb-launch { left: 0; bottom: auto; top: 50%; transform: translateY(-50%) rotate(180deg); writing-mode: vertical-rl; padding: 12px 7px; border-left: 0; font-size: 9.5px; }
}

.fb-ideas { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(24px, 4vw, 56px); align-items: start; }
@media (max-width: 900px) { .fb-ideas { grid-template-columns: 1fr; } .fb-aside { order: -1; } }
.fb-ideas__bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.fb-ideas__filter { width: auto; padding-top: 10px; padding-bottom: 10px; font-size: 14px; }
.fb-aside { display: grid; gap: 14px; padding: clamp(20px, 2.4vw, 30px); border: 1px solid var(--line); position: sticky; top: 92px; }
@media (max-width: 900px) { .fb-aside { position: static; } }

.fb-list { display: grid; border-top: 1px solid var(--line); }
.fb-idea { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 18px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.fb-vote {
  display: grid; justify-items: center; align-content: center; gap: 2px; height: 64px;
  border: 1px solid var(--line); color: var(--ink); transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.fb-vote svg { width: 18px; height: 18px; }
.fb-vote strong { font-family: var(--font-nav); font-weight: 500; font-size: 15px; }
.fb-vote:hover { border-color: var(--ink); }
.fb-vote.is-on { background: var(--ink); color: var(--bone); border-color: var(--ink); }
.fb-idea__title { font-weight: 500; font-size: 17px; line-height: 1.35; }
.fb-idea__desc { margin-top: 6px; color: var(--ink-soft); font-size: 15px; white-space: pre-line; }
.fb-idea__note { margin-top: 10px; padding: 10px 14px; background: var(--paper); font-size: 14px; }
.fb-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 10px; font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); }
.fb-status { padding: 3px 7px; border: 1px solid currentColor; color: var(--ink); }
.fb-status--planned, .fb-status--in_progress { color: var(--accent); }
.fb-status--done, .fb-status--resolved { color: var(--success); }
.fb-status--declined, .fb-status--closed { color: var(--ink-soft); text-decoration: line-through; }

.fb-form-wrap { max-width: 720px; }

.fb-ticket-row { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto auto; gap: 16px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.fb-ticket-row:hover .fb-ticket-row__title { text-decoration: underline; text-underline-offset: 4px; }
.fb-ticket-row__n, .fb-ticket-row__date { font-family: var(--font-nav); font-size: 12px; color: var(--ink-soft); }
.fb-ticket-row.is-unread .fb-ticket-row__title { font-weight: 600; }
@media (max-width: 560px) { .fb-ticket-row { grid-template-columns: 44px minmax(0, 1fr); } .fb-ticket-row .fb-status, .fb-ticket-row__date { grid-column: 2; justify-self: start; } }

.fb-ticket { max-width: 760px; margin-top: 20px; }
.fb-ticket__head { padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.fb-thread { list-style: none; display: grid; gap: 14px; padding: 22px 0; }
.fb-msg { padding: 14px 16px; border: 1px solid var(--line); max-width: 88%; }
.fb-msg p { white-space: pre-line; font-size: 15px; margin-top: 6px; }
.fb-msg--staff { justify-self: end; background: var(--paper); border-color: var(--paper); }
.fb-msg__who { font-family: var(--font-nav); font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); }
.fb-reply { border-top: 1px solid var(--line); padding-top: 20px; }
/* Aperçu de boutique (accueil) : bandeau du photographe sous la croix, comme les vraies boutiques */
.mini-bar { display: flex; align-items: center; justify-content: center; gap: 10px 14px; flex-wrap: wrap; margin: 4px 0 22px; }
.mini-bar__avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--paper); border: 1px solid var(--line); }
.mini-bar__name { font-family: var(--font-display); font-size: clamp(20px, 2vw, 28px); line-height: 1; text-transform: uppercase; max-width: 16ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mini-bar__count { font-family: var(--font-nav); font-size: 9.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-soft); }
.mini-bar__btn { padding: 7px 10px; background: var(--ink); color: var(--bone); font-family: var(--font-nav); font-size: 9.5px; letter-spacing: 0.12em; text-transform: uppercase; }
.mini-bar__bell { display: grid; place-items: center; width: 26px; height: 26px; border: 1px solid var(--ink); }
.mini-bar__bell svg { width: 14px; height: 14px; }
/* Visionneuse : miniature floutée en attendant la version sans filigrane */
.viewer__media img.is-placeholder { filter: blur(10px); transform: scale(1.02); }
/* Visionneuse : les boutons de téléchargement ne débordent jamais du panneau (ex. « … FORMAT INITIAL (.CR3) ») */
.viewer__actions .btn { white-space: normal; text-align: center; min-width: 0; max-width: 100%; }
.viewer__panel { min-width: 0; }
/* Cartes de galerie : badge Public / Privé lisible dans les deux thèmes */
.event-card__flag.badge { background: var(--bone); color: var(--ink); border-color: var(--bone); }
.event-card__flag.badge svg { width: 12px; height: 12px; }
/* Le flou de la couverture privée reste dans le cadre de la photo */
.event-card__cover { clip-path: inset(0); }
/* Titre au-dessus, date / lieu / nombre de photos dessous */
.event-card__title, .event-card__meta { display: block; }
.event-card__arrow { border-radius: 0; flex: none; }
/* ---------- « J'aime » ---------- */
.status-icon--likes { width: auto; padding: 0 9px 0 8px; gap: 5px; grid-auto-flow: column; border-radius: 0; font: 500 11px/1 var(--font-nav); color: var(--ink); }
.status-icon--likes b { font-weight: 500; }
.status-icon--likes.is-liked svg { fill: #C8312F; stroke: #C8312F; }
.like-btn {
  display: inline-flex; align-items: center; gap: 10px; margin-top: 14px;
  padding: 9px 14px; border: 1px solid var(--line); border-radius: 0; background: transparent; color: inherit;
  font: 500 11px/1 var(--font-nav); letter-spacing: .14em; text-transform: uppercase; cursor: pointer;
  transition: border-color .2s ease, color .2s ease;
}
.like-btn:hover { border-color: currentColor; }
.like-btn__icon svg { width: 16px; height: 16px; display: block; transition: transform .25s cubic-bezier(.2, .8, .2, 1.4); }
.like-btn b { font-weight: 500; letter-spacing: 0; opacity: .7; }
.like-btn.is-liked { border-color: #C8312F; color: #E0574F; }
.like-btn.is-liked .like-btn__icon svg { fill: #C8312F; stroke: #C8312F; transform: scale(1.12); }
@media (prefers-reduced-motion: reduce) { .like-btn__icon svg { transition: none; } }
