:root {
  color-scheme: dark;
  --bg: #050816;
  --bg-raised: #080d20;
  --surface: #0c132c;
  --surface-2: #111a38;
  --surface-3: #172247;
  --surface-glass: rgba(9, 14, 34, .92);
  --text: #f7f8ff;
  --text-soft: #d9def4;
  --muted: #a5aecf;
  --muted-2: #747fa5;
  --line: rgba(150, 166, 230, .16);
  --line-strong: rgba(159, 174, 237, .28);
  --accent: #8878ff;
  --accent-strong: #6659e8;
  --accent-soft: rgba(136, 120, 255, .14);
  --cyan: #56d8ff;
  --cyan-soft: rgba(86, 216, 255, .11);
  --success: #58dfb0;
  --warning: #ffc66d;
  --danger: #ff7188;
  --pink: #ff63ad;
  --radius-xs: 10px;
  --radius-sm: 13px;
  --radius: 16px;
  --radius-lg: 24px;
  --shadow-sm: 0 8px 22px rgba(0, 0, 0, .16);
  --shadow: 0 18px 46px rgba(0, 0, 0, .28);
  --topbar-height: 64px;
  --bottom-nav-height: 70px;
  --page-gutter: 14px;
  --section-gap: 20px;
  --card-gap: 8px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
  min-height: 100%;
  overflow-x: hidden;
  background: var(--bg);
  scroll-behavior: smooth;
  scrollbar-color: var(--surface-3) var(--bg);
}

body {
  min-width: 320px;
  min-height: 100vh;
  min-height: 100svh;
  margin: 0;
  overflow-x: hidden;
  color: var(--text);
  background:
    radial-gradient(circle at 12% -8%, rgba(108, 82, 255, .24), transparent 28rem),
    radial-gradient(circle at 105% 22%, rgba(54, 195, 255, .11), transparent 24rem),
    linear-gradient(180deg, #050816 0%, #070b1b 55%, #050816 100%);
  font-size: 16px;
  line-height: 1.52;
  -webkit-font-smoothing: antialiased;
  -webkit-tap-highlight-color: transparent;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .22;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.9) 0 1px, transparent 1.4px),
    radial-gradient(circle, rgba(132,181,255,.8) 0 1px, transparent 1.5px),
    radial-gradient(circle, rgba(255,255,255,.6) 0 1px, transparent 1.4px);
  background-position: 18px 27px, 71px 93px, 42px 146px;
  background-size: 173px 181px, 239px 251px, 311px 293px;
}

body.menu-open,
body.report-open { overflow: hidden; }
::selection { color: #fff; background: rgba(136, 120, 255, .48); }

button,
input,
select,
textarea { font: inherit; }

button,
input,
select,
textarea,
a { touch-action: manipulation; }

button { color: inherit; }
a { color: #cdd2ff; text-decoration: none; }
img,
video { display: block; max-width: 100%; }
svg.icon,
.icon { width: 21px; height: 21px; flex: 0 0 auto; }

h1,
h2,
h3 {
  margin-block: 0;
  color: var(--text);
  line-height: 1.12;
  letter-spacing: -.032em;
}

h1 { font-size: clamp(2rem, 9.5vw, 3rem); }
h2 { font-size: clamp(1.12rem, 4.8vw, 1.32rem); }
h3 { font-size: 1rem; }
p { overflow-wrap: anywhere; }
small { color: var(--muted); }
.local-date { font-variant-numeric: tabular-nums; white-space: nowrap; }
hr { width: 100%; margin: 0; border: 0; border-top: 1px solid var(--line); }

fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
  border: 0;
}

legend {
  margin-block-end: 8px;
  color: var(--text);
  font-size: .9rem;
  font-weight: 800;
}

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid rgba(86, 216, 255, .5);
  outline-offset: 3px;
}

[hidden] { display: none !important; }
[inert] { pointer-events: none; }

.desktop-gate { display: none; }
.mobile-app { display: block; min-height: 100svh; }
.app-shell { position: relative; isolation: isolate; }

.skip-link {
  position: fixed;
  z-index: 999;
  inset: -80px auto auto 12px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  color: #050816;
  background: #fff;
  font-weight: 800;
  box-shadow: var(--shadow);
}

.skip-link:focus { top: 12px; }

.page {
  width: min(100%, 767px);
  min-height: 100svh;
  margin-inline: auto;
  padding:
    calc(var(--topbar-height) + env(safe-area-inset-top) + 10px)
    var(--page-gutter)
    calc(var(--bottom-nav-height) + env(safe-area-inset-bottom) + 22px);
  display: flex;
  flex-direction: column;
}

.page-content {
  width: 100%;
  min-width: 0;
  flex: 1 0 auto;
}

.page-content > * { min-width: 0; }
.page-content > * + * { margin-block-start: var(--section-gap); }
.screen-home .page { padding-block-start: calc(var(--topbar-height) + env(safe-area-inset-top)); }
.screen-home .page-content > .hero:first-child { margin-block-start: 0; }

.topbar {
  position: fixed;
  z-index: 100;
  inset: 0 0 auto;
  width: min(100%, 767px);
  min-height: calc(var(--topbar-height) + env(safe-area-inset-top));
  margin-inline: auto;
  padding:
    max(8px, env(safe-area-inset-top))
    max(var(--page-gutter), env(safe-area-inset-right))
    8px
    max(var(--page-gutter), env(safe-area-inset-left));
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(5,8,22,.985), rgba(6,10,27,.94));
  box-shadow: 0 9px 28px rgba(0,0,0,.18);
  backdrop-filter: blur(18px) saturate(125%);
}

.brand {
  min-width: 0;
  width: max-content;
  max-width: 100%;
  display: grid;
  grid-template-columns: 40px minmax(0, max-content);
  align-items: center;
  gap: 8px;
  color: var(--text);
}

.brand-mark {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.brand-mark img {
  width: 34px;
  height: 34px;
  filter: drop-shadow(0 5px 10px rgba(91,100,255,.32));
}

.brand-copy {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, max-content) 22px;
  align-items: center;
  gap: 5px;
}

.brand-copy strong {
  min-width: 0;
  overflow: hidden;
  color: var(--text);
  font-size: clamp(.72rem, 3.4vw, .84rem);
  font-weight: 850;
  line-height: 1;
  letter-spacing: .065em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.brand-copy small {
  width: 22px;
  height: 19px;
  display: grid;
  place-items: center;
  border-radius: 7px;
  color: #fff;
  background: linear-gradient(135deg, #7e6cff, #497cff);
  font-size: .57rem;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 5px 12px rgba(91,79,255,.23);
}

.top-actions {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}

.icon-link {
  appearance: none;
  position: relative;
  width: 42px;
  height: 42px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 1px solid rgba(150,166,230,.14);
  border-radius: 14px;
  color: #dde1ff;
  background: rgba(255,255,255,.045);
  cursor: pointer;
  transition: transform .15s ease, background-color .15s ease, border-color .15s ease;
}

.icon-link:hover { border-color: var(--line-strong); background: rgba(255,255,255,.075); }
.icon-link:active { transform: scale(.96); }

.top-login {
  min-height: 42px;
  padding-inline: 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(136,120,255,.3);
  border-radius: 14px;
  color: #e4e5ff;
  background: linear-gradient(135deg, rgba(136,120,255,.17), rgba(65,112,255,.08));
  font-size: .8rem;
  font-weight: 800;
  white-space: nowrap;
}

.notification-link b,
.bottom-nav b {
  position: absolute;
  min-width: 18px;
  height: 18px;
  padding-inline: 4px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  color: #fff;
  background: var(--danger);
  font-size: .6rem;
  line-height: 1;
  box-shadow: 0 0 0 2px var(--bg);
}

.notification-link b { inset: -3px -3px auto auto; }

.bottom-nav {
  position: fixed;
  z-index: 110;
  inset: auto 0 0;
  width: min(100%, 767px);
  margin-inline: auto;
  padding: 6px 7px max(6px, env(safe-area-inset-bottom));
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(5, 8, 22, .965);
  box-shadow: 0 -12px 32px rgba(0,0,0,.26);
  backdrop-filter: blur(18px) saturate(125%);
}

.bottom-nav a {
  position: relative;
  min-width: 0;
  min-height: 54px;
  padding: 5px 2px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  border-radius: 13px;
  color: var(--muted-2);
  font-size: .62rem;
  font-weight: 700;
  transition: color .15s ease, background-color .15s ease;
}

.bottom-nav a .icon { width: 22px; height: 22px; }
.bottom-nav a.active,
.bottom-nav a[aria-current="page"] {
  color: #fff;
  background: linear-gradient(180deg, rgba(136,120,255,.16), rgba(136,120,255,.035));
}

.bottom-nav a.active::before,
.bottom-nav a[aria-current="page"]::before {
  content: "";
  position: absolute;
  inset: -6px auto auto;
  width: 28px;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), var(--cyan));
}

.bottom-nav b { inset: 1px calc(50% - 23px) auto auto; }

.menu-backdrop {
  position: fixed;
  z-index: 125;
  inset: 0;
  background: rgba(1,3,12,.72);
  backdrop-filter: blur(3px);
}

.menu-sheet {
  position: fixed;
  z-index: 130;
  inset: auto 0 0;
  width: min(100%, 767px);
  max-height: min(82svh, 720px);
  margin-inline: auto;
  padding: 9px var(--page-gutter) calc(16px + env(safe-area-inset-bottom));
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--line-strong);
  border-bottom: 0;
  border-radius: 24px 24px 0 0;
  background: linear-gradient(160deg, rgba(17,26,56,.995), rgba(7,11,29,.995));
  box-shadow: 0 -24px 70px rgba(0,0,0,.52);
  transform: translateY(105%);
  visibility: hidden;
  transition: transform .22s ease, visibility 0s linear .22s;
}

.menu-sheet.open {
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s;
}

.sheet-handle {
  width: 42px;
  height: 4px;
  margin: 0 auto 11px;
  border-radius: 999px;
  background: rgba(255,255,255,.2);
}

.menu-sheet > header {
  margin-block-end: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.menu-sheet h2 { margin-block-start: 3px; }
.sheet-links { display: grid; gap: 6px; }
.sheet-links form { margin: 0; }

.sheet-links > a,
.sheet-link {
  appearance: none;
  width: 100%;
  min-height: 60px;
  padding: 9px 11px;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 20px;
  align-items: center;
  gap: 9px;
  border: 1px solid transparent;
  border-radius: 15px;
  color: var(--text);
  background: rgba(255,255,255,.035);
  text-align: start;
  cursor: pointer;
}

.sheet-links > a:hover,
.sheet-link:hover { border-color: var(--line); background: rgba(136,120,255,.1); }
.sheet-links span { min-width: 0; display: grid; }
.sheet-links small { font-size: .71rem; }
.danger-link { color: #ffc3ce; }

.page-head,
.section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.page-head { margin: 2px 0 14px; }
.page-head > :first-child { min-width: 0; }
.page-head h1,
.section-head h2 { margin: 0; }
.page-head p:not(.eyebrow) {
  max-width: 38rem;
  margin: 7px 0 0;
  color: var(--muted);
  font-size: .91rem;
}

.page-head > form,
.page-head > .button { flex: 0 0 auto; }
.section-head { margin: 0 0 10px; }
.section-head.compact { margin-block: 16px 9px; }
.content-section { margin-block: 0; scroll-margin-block-start: calc(var(--topbar-height) + 12px); }
.content-section + .content-section { margin-block-start: 22px; }

.eyebrow,
.kicker,
.section-kicker {
  margin: 0;
  color: #a7b3ff;
  font-size: .67rem;
  font-weight: 850;
  line-height: 1.35;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.section-kicker { margin-block-end: 3px; color: var(--muted-2); }
.section-link,
.section-head > a {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  color: #cdd2ff;
  font-size: .76rem;
  font-weight: 800;
  white-space: nowrap;
}

.section-link .icon,
.section-head > a .icon { width: 16px; height: 16px; }
.back {
  width: max-content;
  min-height: 34px;
  margin-block-end: 7px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 800;
}

.back .icon { width: 18px; height: 18px; }
.breadcrumb {
  margin: 2px 0 10px;
  display: flex;
  align-items: center;
  gap: 7px;
  overflow: hidden;
  color: var(--muted);
  font-size: .75rem;
}

.breadcrumb a {
  max-width: 44%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.actions.centered { justify-content: center; }
.button {
  appearance: none;
  min-height: 46px;
  padding: 10px 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid transparent;
  border-radius: 14px;
  color: var(--text);
  font-size: .88rem;
  font-weight: 800;
  line-height: 1.15;
  text-align: center;
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease, background-color .15s ease, filter .15s ease;
}

.button:hover { filter: brightness(1.08); }
.button:active { transform: scale(.975); }
.button:disabled { opacity: .55; cursor: wait; filter: none; }
.button.primary {
  color: #fff;
  background: linear-gradient(135deg, #907eff, #586fed);
  box-shadow: 0 10px 24px rgba(93,80,228,.25);
}

.button.secondary,
.button.ghost {
  border-color: var(--line);
  color: var(--text);
  background: rgba(255,255,255,.055);
  box-shadow: none;
}

.button.danger {
  border-color: rgba(255,113,136,.36);
  color: #fff;
  background: rgba(255,113,136,.15);
  box-shadow: none;
}

.button.full { width: 100%; }
.button.compact { min-height: 40px; padding: 8px 11px; font-size: .77rem; }

.card,
.auth-card,
.topic-header,
.photo-detail,
.legal,
.cosmic-panel {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg, rgba(17,26,57,.9), rgba(8,13,32,.94));
  box-shadow: var(--shadow-sm);
}

.card { padding: 13px; }
.stack,
.separated-stack,
.discussion-list,
.conversation-list,
.notification-list,
.member-grid,
.category-grid { display: grid; gap: var(--card-gap); }

.card + .card,
details.card + details.card { margin-block-start: 0; }

.empty {
  min-height: 100px;
  padding: 18px 14px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 5px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--radius);
  color: var(--muted);
  background: rgba(255,255,255,.018);
  text-align: center;
}

.empty > span { color: #a99fff; font-size: 1.5rem; }
.empty p { margin: 0; font-size: .82rem; }
.empty.compact,
.empty.compact-empty,
.admin-empty { min-height: 82px; padding: 14px; }

.status-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
}

.pill {
  min-height: 25px;
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  color: #d7d3ff;
  background: rgba(136,120,255,.14);
  font-size: .63rem;
  font-weight: 800;
  line-height: 1;
}

.pill.accent { color: #e5e1ff; background: rgba(136,120,255,.2); }
.pill.success,
.pill.success-pill { color: #b8f5dc; background: rgba(88,223,176,.12); }
.pill.warning { color: #ffe0a8; background: rgba(255,198,109,.12); }
.pill.error { color: #ffc3ce; background: rgba(255,113,136,.13); }

.alert {
  margin: 0 0 14px;
  padding: 12px 13px;
  border: 1px solid;
  border-radius: var(--radius-sm);
  font-size: .84rem;
}

.alert.success { color: #bdf7df; border-color: rgba(88,223,176,.32); background: rgba(88,223,176,.09); }
.alert.error { color: #ffc3ce; border-color: rgba(255,113,136,.34); background: rgba(255,113,136,.09); }
.alert.warning { color: #ffe2ad; border-color: rgba(255,198,109,.3); background: rgba(255,198,109,.08); }

.feedback-stack {
  position: fixed;
  z-index: 420;
  top: calc(var(--topbar-height) + env(safe-area-inset-top) + 10px);
  left: 50%;
  width: min(100%, 767px);
  margin: 0;
  padding-inline:
    max(var(--page-gutter), env(safe-area-inset-left))
    max(var(--page-gutter), env(safe-area-inset-right));
  display: grid;
  gap: 9px;
  pointer-events: none;
  transform: translateX(-50%);
  isolation: isolate;
}

.global-feedback,
.auth-feedback { margin: 0; }
.feedback {
  width: min(100%, 540px);
  min-height: 64px;
  margin-inline: auto;
  padding: 11px;
  display: grid;
  grid-template-columns: 38px minmax(0,1fr) 36px;
  align-items: center;
  gap: 10px;
  overflow: hidden;
  border: 1px solid;
  border-radius: 17px;
  background: #0b1229;
  box-shadow: 0 20px 52px rgba(0,0,0,.56), 0 4px 16px rgba(0,0,0,.34), inset 0 1px rgba(255,255,255,.07);
  backdrop-filter: blur(20px) saturate(145%);
  pointer-events: auto;
  animation: feedback-arrive .36s cubic-bezier(.16,1,.3,1) both;
  transition: opacity .28s ease, transform .28s cubic-bezier(.4,0,1,1), filter .28s ease;
}

.feedback.error {
  border-color: rgba(255,113,136,.7);
  background: linear-gradient(135deg,rgba(92,29,49,.99),rgba(12,18,43,.995) 62%);
}
.feedback.success {
  border-color: rgba(88,223,176,.68);
  background: linear-gradient(135deg,rgba(29,91,76,.99),rgba(12,18,43,.995) 62%);
}
.feedback.leaving { opacity: 0; filter: blur(3px); transform: translateY(-11px) scale(.975); }
.feedback-symbol {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #fff;
  background: rgba(255,113,136,.18);
  font-weight: 900;
}

.feedback.success .feedback-symbol { background: rgba(88,223,176,.24); box-shadow: inset 0 0 0 1px rgba(184,247,223,.12); }
.feedback-copy { min-width: 0; display: grid; gap: 1px; }
.feedback-copy strong { color: #fff; font-size: .76rem; line-height: 1.2; }
.feedback-copy > span { color: #eef1ff; font-size: .8rem; line-height: 1.42; overflow-wrap: anywhere; }
.feedback-close {
  appearance: none;
  width: 34px;
  height: 34px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 11px;
  color: var(--muted);
  background: transparent;
  cursor: pointer;
}

.feedback-close:hover { color: #fff; background: rgba(255,255,255,.06); }
.feedback-close .icon { width: 17px; height: 17px; }

@keyframes feedback-arrive {
  from { opacity: 0; filter: blur(5px); transform: translateY(-14px) scale(.97); }
  to { opacity: 1; filter: blur(0); transform: translateY(0) scale(1); }
}

.presence-badge {
  width: max-content;
  max-width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: .65rem;
  font-weight: 750;
  line-height: 1.2;
}

.presence-badge i {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: #687292;
  box-shadow: 0 0 0 3px rgba(104,114,146,.11);
}

.presence-badge.is-online { color: #aef1d6; }
.presence-badge.is-online i {
  background: var(--success);
  box-shadow: 0 0 0 3px rgba(88,223,176,.13), 0 0 12px rgba(88,223,176,.4);
  animation: presence-pulse 2.4s ease-in-out infinite;
}

.presence-badge.is-compact span { font-size: .61rem; }

@keyframes presence-pulse {
  0%,100% { opacity: 1; transform: scale(1); }
  50% { opacity: .72; transform: scale(.86); }
}

.form,
.auth-card form { display: grid; gap: 13px; }
.search-form,
.upload-form,
.badge-admin-form,
.surface-separated { min-width: 0; }
label {
  min-width: 0;
  display: grid;
  gap: 6px;
  color: #e9ebfb;
  font-size: .82rem;
  font-weight: 750;
}

label > small { color: var(--muted); font-size: .7rem; font-weight: 500; line-height: 1.42; }
.field-label { min-width: 0; display: inline-flex; align-items: baseline; gap: 4px; }
.field-label > small { margin-inline-start: auto; color: var(--muted-2); font-size: .62rem; font-weight: 650; }
.required-marker { color: var(--danger); font-size: .85em; font-weight: 950; line-height: 1; }
.required-legend {
  width: max-content;
  margin: 0 0 -2px auto;
  color: var(--muted);
  font-size: .68rem;
  font-weight: 700;
}

.required-legend b { margin-inline-end: 3px; color: var(--danger); font-size: .9rem; }
input,
textarea,
select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 13px;
  outline: 0;
  color: var(--text);
  background: rgba(2,5,18,.62);
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}

input::placeholder,
textarea::placeholder { color: #727ca0; opacity: 1; }
input:hover,
textarea:hover,
select:hover { border-color: rgba(158,174,239,.24); }
input:focus,
textarea:focus,
select:focus {
  border-color: rgba(136,120,255,.8);
  background: rgba(4,7,22,.82);
  box-shadow: 0 0 0 3px rgba(136,120,255,.13);
}

input.is-invalid,
textarea.is-invalid,
select.is-invalid {
  border-color: rgba(255,113,136,.76);
  background: rgba(44,8,22,.34);
  box-shadow: 0 0 0 3px rgba(255,113,136,.1);
}

label.has-error > .field-label,
label.has-error > span > strong { color: #ffd1d8; }

textarea { min-height: 104px; resize: vertical; }
select { cursor: pointer; }
input[type="color"] { padding: 5px; }
input[type="file"] { padding: 8px; }
input[type="file"]::file-selector-button {
  margin-inline-end: 9px;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--text);
  background: var(--surface-2);
  font: inherit;
  font-weight: 750;
}

.form-grid { display: grid; gap: 10px; }
.field-error,
.form-help,
.submission-note {
  padding: 10px 12px;
  border-radius: 12px;
  font-size: .76rem;
}

.field-error { color: #ffc3ce; background: rgba(255,113,136,.11); }
.form-help { color: var(--muted); background: rgba(255,255,255,.03); }
.submission-note { color: #f3d49e; background: rgba(255,198,109,.075); }
.upload-validation {
  padding: 12px;
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  align-items: start;
  gap: 10px;
  border: 1px solid rgba(255,113,136,.48);
  border-radius: 14px;
  color: #ffd3da;
  background: linear-gradient(135deg,rgba(255,77,112,.14),rgba(35,10,29,.72));
  box-shadow: 0 10px 28px rgba(28,2,14,.18);
  animation: validation-panel-reveal .24s cubic-bezier(.16,1,.3,1);
}

.upload-validation-icon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #fff;
  background: rgba(255,113,136,.2);
  font-weight: 950;
}

.upload-validation strong { display: block; font-size: .8rem; }
.upload-validation p { margin: 2px 0 5px; color: #e7aeba; font-size: .7rem; }
.upload-validation ul { margin: 0; padding-inline-start: 17px; display: grid; gap: 3px; }
.upload-validation li { font-size: .74rem; line-height: 1.4; }

@keyframes validation-panel-reveal {
  from { opacity: 0; transform: translateY(7px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.check {
  grid-template-columns: 20px minmax(0,1fr);
  align-items: flex-start;
  gap: 9px;
  font-weight: 500;
}

.check input {
  width: 20px;
  min-height: 20px;
  margin: 1px 0 0;
  accent-color: var(--accent);
}

.switch-row {
  min-height: 50px;
  padding: 8px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid var(--line);
  font-weight: 650;
}

.switch-row:last-child { border-bottom: 0; }
.switch-row input {
  appearance: none;
  position: relative;
  width: 44px;
  min-width: 44px;
  min-height: 26px;
  padding: 0;
  border-radius: 999px;
  background: #26304f;
}

.switch-row input::after {
  content: "";
  position: absolute;
  inset: 3px auto auto 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,.28);
  transition: transform .18s ease;
}

.switch-row input:checked { border-color: rgba(88,223,176,.4); background: linear-gradient(90deg,var(--accent-strong),#40bba8); }
.switch-row input:checked::after { transform: translateX(18px); }
.search-bar {
  margin-block-end: 14px;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 7px;
}

.search-bar .button { min-width: 46px; }
.local-preview { margin-block-start: 8px; }
.review-image {
  width: 100%;
  max-height: 340px;
  object-fit: cover;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #02040d;
}

.table-wrap {
  max-width: 100%;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(7,12,29,.74);
  scrollbar-width: thin;
}

table { width: 100%; min-width: 620px; border-collapse: collapse; }
th,
td {
  padding: 10px 11px;
  border-bottom: 1px solid var(--line);
  text-align: start;
  vertical-align: top;
  font-size: .75rem;
}

th {
  position: sticky;
  top: 0;
  z-index: 1;
  color: var(--muted);
  background: rgba(11,17,40,.98);
  font-weight: 800;
}

tbody tr:last-child td { border-bottom: 0; }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Accueil et découverte */
.hero {
  position: relative;
  min-height: 0;
  margin: 0 calc(var(--page-gutter) * -1) 28px;
  overflow: hidden;
  border-radius: 0 0 28px 28px;
  background: #071027;
  box-shadow: 0 18px 46px rgba(0,0,0,.24);
  isolation: isolate;
}

.hero-media,
.hero-media video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-media { background: url("../images/space-fallback.svg") center / cover no-repeat; }
.hero-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(4,7,19,.14), rgba(4,7,19,.2) 30%, rgba(5,8,22,.94) 88%),
    linear-gradient(90deg, rgba(80,50,174,.22), transparent 62%);
}

.hero-overlay {
  position: relative;
  z-index: 1;
  min-height: 0;
  padding: clamp(32px, 4.5svh, 42px) 18px 24px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.hero-copy { width: 100%; max-width: 540px; }
.hero h1 {
  max-width: none;
  margin: 7px 0 13px;
  font-size: clamp(1.85rem, 8.7vw, 3.3rem);
  line-height: 1;
  letter-spacing: -.045em;
  white-space: nowrap;
}

.hero-copy > p:not(.eyebrow) {
  max-width: 34rem;
  margin: 0 0 18px;
  color: #e4e8fb;
  font-size: .97rem;
  line-height: 1.48;
}

.hero .actions {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: stretch;
}

.hero .button { min-width: 0; padding-inline: 13px; font-size: .8rem; }
.hero-scroll {
  margin-block-start: 22px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: .64rem;
  font-weight: 750;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.hero-scroll span {
  position: relative;
  width: 21px;
  height: 32px;
  border: 1px solid rgba(255,255,255,.26);
  border-radius: 999px;
}

.hero-scroll span::after {
  content: "";
  position: absolute;
  inset: 6px auto auto 50%;
  width: 3px;
  height: 6px;
  border-radius: 999px;
  background: #fff;
  transform: translateX(-50%);
  animation: scroll-dot 1.8s infinite;
}

@keyframes scroll-dot {
  0% { opacity: 0; transform: translate(-50%,0); }
  30% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%,10px); }
}

.announcement {
  padding: 12px;
  display: grid;
  grid-template-columns: 38px minmax(0,1fr);
  gap: 10px;
  border: 1px solid rgba(136,120,255,.26);
  border-radius: var(--radius);
  background: linear-gradient(135deg,rgba(136,120,255,.14),rgba(86,216,255,.045));
}

.announcement-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #d8d3ff;
  background: rgba(136,120,255,.18);
}

.announcement strong { display: block; }
.announcement p { margin: 3px 0; color: var(--muted); font-size: .84rem; }
.announcement a { font-size: .75rem; font-weight: 800; }

.stats {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}

.stats > div {
  min-width: 0;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(255,255,255,.03);
}

.stats strong { display: block; font-size: 1.28rem; line-height: 1.05; }
.stats span {
  display: block;
  margin-block-start: 4px;
  color: var(--muted);
  font-size: .63rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
}

.site-views-card {
  margin-block-start: 9px;
  padding: 12px 13px;
  display: grid;
  grid-template-columns: 42px minmax(0,1fr);
  align-items: center;
  gap: 11px;
  border: 1px solid rgba(86,216,255,.2);
  border-radius: 16px;
  background: linear-gradient(135deg,rgba(86,216,255,.08),rgba(136,120,255,.07));
}

.site-views-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 13px;
  color: #9ce7ff;
  background: rgba(86,216,255,.1);
}

.site-views-copy { min-width: 0; display: grid; gap: 4px; }
.site-views-total { display: flex; align-items: baseline; gap: 7px; color: var(--text-soft); }
.site-views-total strong { color: var(--text); font-size: 1.2rem; line-height: 1; }
.site-views-total b { font-size: .78rem; font-weight: 800; }
.site-views-copy > small { color: var(--muted); font-size: .66rem; line-height: 1.35; }

.topic-row {
  min-height: 70px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 11px;
  color: var(--text);
}

.topic-row > div { min-width: 0; }
.topic-row h2,
.topic-row h3 {
  margin: 4px 0;
  overflow-wrap: anywhere;
  font-size: .92rem;
  line-height: 1.25;
}

.topic-row small { display: block; overflow-wrap: anywhere; font-size: .68rem; }
.chevron,
.chevron-icon { flex: 0 0 auto; color: var(--muted-2); }
.chevron { font-size: 1.25rem; }
.chevron-icon { width: 18px !important; height: 18px !important; }

.category-grid { display: grid; }
.category-card {
  position: relative;
  min-width: 0;
  padding: 13px;
  display: grid;
  grid-template-columns: 44px minmax(0,1fr) 18px;
  align-items: center;
  gap: 11px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  color: var(--text);
  background: linear-gradient(145deg,rgba(17,26,57,.88),rgba(8,13,32,.94));
}

.category-card > :nth-child(2) { min-width: 0; }
.category-card h2,
.category-card > :nth-child(2) > strong { margin: 0 0 3px; display: block; font-size: .9rem; line-height: 1.2; }
.category-card p {
  margin: 0 0 4px;
  display: -webkit-box;
  overflow: hidden;
  color: var(--muted);
  font-size: .76rem;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.category-card small { font-size: .65rem; }
.category-icon,
.quick-icon {
  display: grid;
  place-items: center;
  color: #bdb6ff;
  background: linear-gradient(135deg,rgba(136,120,255,.22),rgba(86,216,255,.09));
}

.category-icon {
  width: 42px;
  height: 42px;
  border-radius: 13px;
  font-size: 1.1rem;
}

.subcategories {
  margin: 0 calc(var(--page-gutter) * -1) 15px;
  padding: 0 var(--page-gutter) 3px;
  display: flex;
  gap: 7px;
  overflow-x: auto;
  scrollbar-width: none;
}

.subcategories::-webkit-scrollbar { display: none; }
.subcategories a {
  flex: 0 0 auto;
  min-height: 42px;
  padding: 8px 11px;
  display: flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.035);
  font-size: .75rem;
}

.chips,
.filter-tabs,
.filter-chips,
.subnav,
.admin-nav {
  display: flex;
  align-items: center;
  gap: 6px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.chips::-webkit-scrollbar,
.filter-tabs::-webkit-scrollbar,
.filter-chips::-webkit-scrollbar,
.subnav::-webkit-scrollbar,
.admin-nav::-webkit-scrollbar { display: none; }

.chips,
.filter-tabs,
.filter-chips,
.subnav {
  margin: 0 calc(var(--page-gutter) * -1) 16px;
  padding: 0 var(--page-gutter) 3px;
}

.chips a,
.chips span,
.filter-tabs a,
.filter-chips .chip,
.subnav a {
  appearance: none;
  flex: 0 0 auto;
  min-height: 36px;
  padding: 7px 10px;
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(150,166,230,.22);
  border-radius: 999px;
  color: var(--muted);
  background: rgba(10,16,39,.75);
  font-size: .69rem;
  font-weight: 750;
  line-height: 1;
  white-space: nowrap;
}

.chips a.active,
.filter-tabs a.active,
.filter-tabs a[aria-current="page"],
.filter-chips .chip.active,
.subnav a.active {
  border-color: rgba(136,120,255,.5);
  color: #fff;
  background: linear-gradient(135deg,rgba(136,120,255,.28),rgba(72,114,255,.18));
}

.chips b { margin-inline-start: 4px; color: var(--text-soft); }
.rank-list { display: grid; border-top: 1px solid var(--line); }
.rank-list a {
  min-height: 62px;
  padding: 10px 3px;
  display: grid;
  grid-template-columns: 30px minmax(0,1fr) 18px;
  align-items: center;
  gap: 9px;
  border-bottom: 1px solid var(--line);
  color: var(--text);
}

.rank-list > a > span { color: var(--muted-2); font-size: .68rem; font-weight: 850; }
.rank-list strong,
.rank-list small { display: block; }

.photo-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}

.photo-card {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 15px;
  color: #fff;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.photo-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .25s ease;
}

.photo-card:hover img { transform: scale(1.025); }
.photo-card > span {
  position: absolute;
  inset: auto 0 0;
  padding: 27px 8px 8px;
  background: linear-gradient(transparent,rgba(2,4,14,.94));
}

.photo-card strong,
.photo-card small,
.photo-card span em {
  max-width: 100%;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.photo-card strong { font-size: .7rem; }
.photo-card small { color: #d5d9ed; font-size: .62rem; }
.photo-card span em { color: #ffc5df; font-size: .59rem; font-style: normal; }
.photo-placeholder {
  min-height: 150px;
  grid-column: 1 / -1;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 4px;
  border: 1px dashed var(--line-strong);
  border-radius: var(--radius);
  text-align: center;
}

.photo-placeholder span { font-size: 1.7rem; }

.join-card,
.cosmic-panel {
  position: relative;
  margin-block-start: 26px;
  padding: 20px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: linear-gradient(145deg,rgba(21,29,67,.9),rgba(8,13,32,.95));
  box-shadow: var(--shadow-sm);
}

.join-card::after,
.cosmic-panel::after {
  content: "";
  position: absolute;
  inset: -80px -80px auto auto;
  width: 180px;
  height: 180px;
  border-radius: 50%;
  background: radial-gradient(circle,rgba(86,216,255,.16),transparent 65%);
  pointer-events: none;
}

.join-card h2,
.cosmic-panel h1 { max-width: 15ch; margin: 7px 0 10px; }
.join-card p,
.cosmic-panel > p:last-of-type { color: var(--muted); }
.join-card .button { margin-block-start: 6px; }

.quick-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}

.quick-card {
  min-height: 128px;
  padding: 13px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  color: var(--text);
  background: linear-gradient(145deg,rgba(19,28,63,.9),rgba(8,13,32,.95));
}

.quick-card:nth-child(1),
.quick-card:nth-child(4) { background: linear-gradient(145deg,rgba(73,52,149,.38),rgba(8,13,32,.96)); }
.quick-icon {
  width: 34px;
  height: 34px;
  margin-block-end: auto;
  border-radius: 11px;
  font-size: 1rem;
}

.quick-card strong { font-size: .86rem; line-height: 1.25; }
.quick-card small { margin-block-start: 3px; font-size: .66rem; line-height: 1.35; }
.feature-card {
  display: grid;
  grid-template-columns: 38px minmax(0,1fr);
  align-items: start;
  gap: 11px;
}

.feature-card > span,
.settings-title > span,
.form-section-title > span {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #c8c2ff;
  background: rgba(136,120,255,.13);
  font-size: .66rem;
  font-weight: 900;
}

.feature-card h2 { margin: 0 0 4px; font-size: 1rem; }
.feature-card p { margin: 0; color: var(--muted); font-size: .82rem; }

.member-card {
  min-height: 70px;
  display: grid;
  grid-template-columns: 46px minmax(0,1fr) auto;
  align-items: center;
  gap: 10px;
}

.member-card > img {
  width: 46px;
  height: 46px;
  object-fit: cover;
  border-radius: 14px;
  background: var(--surface-2);
}

.member-card > div { min-width: 0; display: grid; }
.member-card > div > span:not(.presence-badge) { color: var(--badge,#b8b2ff); font-size: .7rem; }
.member-card > div small { overflow: hidden; font-size: .65rem; text-overflow: ellipsis; white-space: nowrap; }
.member-chip,
.member-line {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
}

.member-chip img,
.member-line img {
  width: 42px;
  height: 42px;
  object-fit: cover;
  border-radius: 13px;
  background: var(--surface-2);
}

.member-chip > span,
.member-line > span { min-width: 0; display: grid; }
.online { color: var(--success); font-size: .66rem; font-style: normal; }
.online::before { content: "•"; margin-inline-end: 3px; }

/* Pied de page */
.site-footer {
  flex: 0 0 auto;
  margin: 44px 0 0;
  padding: 20px 1px 14px;
  display: grid;
  gap: 13px;
  border-top: 1px solid var(--line);
  color: var(--muted);
}

.footer-brand { display: grid; gap: 3px; }
.site-footer strong { color: #fff; font-size: .8rem; letter-spacing: .065em; }
.site-footer p { margin: 0; font-size: .76rem; }
.site-footer nav {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 4px 10px;
}

.site-footer a {
  min-height: 33px;
  display: inline-flex;
  align-items: center;
  color: #bcc4e5;
  font-size: .72rem;
}

.site-footer > small { color: var(--muted-2); font-size: .66rem; }

/* Authentification, pages légales et erreurs */
.screen-auth .page-content { width: min(100%, 520px); margin-inline: auto; }
.auth-shell {
  padding: 2px 0 20px;
  display: grid;
  gap: 14px;
}

.auth-visual {
  position: relative;
  min-height: 155px;
  padding: 20px 4px 4px;
  overflow: hidden;
}

.auth-visual::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -12px -55px auto auto;
  width: 170px;
  height: 170px;
  border-radius: 50%;
  background: radial-gradient(circle,rgba(112,91,255,.28),transparent 67%);
}

.auth-visual h1 { max-width: 12ch; margin: 6px 0 9px; }
.auth-visual p:last-child { max-width: 30rem; margin: 0; color: var(--muted); font-size: .88rem; }
.auth-orbit {
  position: absolute;
  z-index: -1;
  inset: 31px 7px auto auto;
  width: 106px;
  height: 40px;
  border: 1px solid rgba(155,143,255,.32);
  border-radius: 50%;
  transform: rotate(-18deg);
}

.auth-orbit::after {
  content: "";
  position: absolute;
  inset: 5px auto auto 10px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--cyan);
  box-shadow: 0 0 18px var(--cyan);
}

.auth-card { padding: 18px; }
.auth-card > :first-child { margin-block-start: 0; }
.auth-card h1 { margin-block-end: 17px; }
.auth-link {
  width: max-content;
  min-height: 38px;
  margin-block-start: 11px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: .79rem;
  font-weight: 800;
}

.auth-link .icon { width: 17px; height: 17px; }
.auth-divider {
  margin: 15px 0;
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--muted-2);
  font-size: .68rem;
}

.auth-divider::before,
.auth-divider::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.auth-foot { margin: 14px 0 0; color: var(--muted); text-align: center; font-size: .82rem; }

.legal {
  width: min(100%, 650px);
  margin-inline: auto;
  padding: 18px;
  display: grid;
  gap: 18px;
  white-space: normal;
}

.legal-header { display: grid; gap: 7px; }
.legal-header .back { margin: 0 0 2px; }
.legal-header h1 { font-size: clamp(2rem,10vw,3rem); }
.legal-notice {
  padding: 13px;
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  align-items: start;
  gap: 10px;
  border: 1px solid rgba(255,198,109,.28);
  border-radius: 14px;
  background: rgba(255,198,109,.07);
}

.legal-notice > span {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #ffe1aa;
  background: rgba(255,198,109,.12);
  font-weight: 900;
}

.legal-notice strong { display: block; color: #ffe5b8; font-size: .82rem; }
.legal-notice p { margin: 2px 0 0; color: #dfcfb3; font-size: .76rem; line-height: 1.45; }
.legal-content { color: #e1e5f3; font-size: .92rem; line-height: 1.68; overflow-wrap: anywhere; }
.legal-content br + br { display: block; content: ""; margin-block-start: 9px; }
.error-page {
  width: min(100%, 480px);
  min-height: 58svh;
  margin-inline: auto;
  padding: 50px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.error-page img { width: 92px; margin-block-end: 15px; }
.error-page h1 { margin: 6px 0 9px; }
.error-page p:not(.eyebrow) { max-width: 30rem; margin: 0 0 18px; color: var(--muted); }

/* Forum */
.screen-forum,
.screen-gallery,
.screen-messages,
.screen-notifications { --section-gap: 18px; }
.screen-profile { --section-gap: 20px; }
.forum-page-head { margin-block-end: 12px; }
.forum-page-head > div { max-width: min(100%, 38rem); }
.forum-page-head p:not(.eyebrow) { margin-block-start: 5px; font-size: .84rem; line-height: 1.42; }
.forum-page-head .back { margin-block-end: 5px; }

.forum-tabs {
  margin-block-end: 18px;
  padding-block-end: 2px;
  scroll-snap-type: inline proximity;
}

.forum-tabs a { min-height: 38px; padding-inline: 12px; scroll-snap-align: start; }
.forum-category-list,
.forum-topic-list { display: grid; gap: 8px; }

.forum-category-card {
  min-width: 0;
  min-height: 76px;
  padding: 10px;
  display: grid;
  grid-template-columns: 50px minmax(0,1fr) 52px;
  align-items: center;
  gap: 10px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 16px;
  color: var(--text);
  background: linear-gradient(145deg,rgba(18,27,61,.9),rgba(8,13,32,.96));
  box-shadow: var(--shadow-sm);
  transition: border-color .15s ease, background-color .15s ease, transform .15s ease;
}

.forum-category-card:hover { border-color: var(--line-strong); background: linear-gradient(145deg,rgba(24,35,76,.94),rgba(10,16,39,.98)); }
.forum-category-card:active { transform: scale(.99); }
.forum-category-visual {
  width: 50px;
  height: 50px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(151,166,231,.2);
  border-radius: 14px;
  color: #d0ccff;
  background: linear-gradient(145deg,rgba(136,120,255,.22),rgba(86,216,255,.09));
  font-size: 1.05rem;
}

.forum-category-visual img { width: 100%; height: 100%; object-fit: cover; }
.forum-category-copy { min-width: 0; display: grid; gap: 3px; }
.forum-category-copy strong {
  overflow: hidden;
  font-size: .88rem;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forum-category-copy small {
  overflow: hidden;
  color: var(--muted);
  font-size: .67rem;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forum-category-meta {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0,1fr) 15px;
  align-items: center;
  color: var(--muted);
  text-align: end;
}

.forum-category-meta strong { color: var(--text-soft); font-size: .8rem; line-height: 1; }
.forum-category-meta small { grid-column: 1; font-size: .55rem; line-height: 1.2; }
.forum-category-meta .icon { grid-column: 2; grid-row: 1 / 3; width: 15px; height: 15px; color: var(--muted-2); }

.forum-topic-card { min-height: 72px; padding: 11px 12px; }
.forum-topic-copy { min-width: 0; display: grid; gap: 3px; }
.forum-topic-copy > strong {
  overflow: hidden;
  color: var(--text);
  font-size: .88rem;
  line-height: 1.26;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forum-topic-copy > small { overflow: hidden; font-size: .64rem; text-overflow: ellipsis; white-space: nowrap; }
.forum-topic-copy .status-line { min-height: 19px; }
.forum-topic-copy .status-line .kicker { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.forum-list-head { margin-block: 0 9px; }
.forum-list-head > div { display: flex; align-items: baseline; gap: 7px; }
.forum-list-head .section-kicker { margin: 0; }
.forum-list-head h2 { font-size: .8rem; color: var(--muted); font-weight: 700; letter-spacing: 0; }
.forum-subcategories { margin-block-end: 12px; }
.forum-breadcrumb { margin-block-end: 9px; }

.forum-topic-hero { padding: 15px; }
.forum-topic-hero h1 { margin-block: 10px 13px; font-size: clamp(1.65rem,7.2vw,2.45rem); }
.forum-topic-content { margin-block: 13px; }
.forum-replies { margin-block-start: 20px; }
.forum-post { padding: 12px; }
.forum-post-content { margin: 12px 0 10px; font-size: .88rem; line-height: 1.6; }
.forum-reply-box { margin-block-start: 18px; padding: 14px; }
.forum-editor { padding: 14px; }
.forum-editor .file-drop { min-height: 106px; }

.topic-header,
.topic-hero { padding: 17px; }
.topic-meta-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.topic-hero h1 {
  margin: 12px 0 15px;
  font-size: clamp(1.75rem,8vw,2.75rem);
  overflow-wrap: anywhere;
}

.topic-author {
  min-width: 0;
  padding: 10px 0;
  display: grid;
  grid-template-columns: 46px minmax(0,1fr) auto;
  align-items: center;
  gap: 9px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  color: var(--text);
}

.topic-author img,
.post-author img {
  object-fit: cover;
  border-radius: 13px;
  background: var(--surface-2);
}

.topic-author img { width: 46px; height: 46px; }
.topic-author > span,
.post-author > span { min-width: 0; display: grid; }
.topic-author strong,
.post-author strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topic-author small,
.post-author small { overflow: hidden; font-size: .66rem; text-overflow: ellipsis; white-space: nowrap; }
.topic-author time { color: var(--muted); font-size: .64rem; text-align: end; }
.topic-cover {
  width: 100%;
  max-height: 520px;
  margin-block-start: 15px;
  object-fit: contain;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: #02040d;
}

.rich-content {
  margin: 15px 0;
  color: #e8ebf7;
  font-size: .92rem;
  line-height: 1.65;
  overflow-wrap: anywhere;
}

.topic-actions,
.post-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  border-top: 1px solid var(--line);
}

.topic-actions { padding-block-start: 12px; }
.topic-actions form,
.post-actions form { margin: 0; }
.posts { margin: 12px 0; }
.post { position: relative; }
.post header {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  gap: 9px;
}

.post-author {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--text);
}

.post-author img { width: 42px; height: 42px; }
.post-date { margin-inline-start: auto; display: grid; text-align: end; }
.post-date time,
.post header > time { margin-inline-start: auto; color: var(--muted); font-size: .64rem; text-align: end; }
.edited { display: block; margin: -7px 0 10px; font-size: .62rem; }
.post-actions { padding-block-start: 8px; }
.text-action,
.action-menu > summary {
  appearance: none;
  min-height: 38px;
  padding: 7px 9px;
  border: 0;
  border-radius: 10px;
  color: #c2c9e8;
  background: transparent;
  font-size: .72rem;
  font-weight: 750;
  cursor: pointer;
}

.text-action:hover,
.action-menu > summary:hover { background: rgba(136,120,255,.1); }
.action-menu { position: relative; }
.action-menu > summary { list-style: none; }
.action-menu > summary::-webkit-details-marker { display: none; }
.action-popover {
  position: relative;
  z-index: 20;
  width: min(82vw,350px);
  margin-block-start: 6px;
  padding: 12px;
  border: 1px solid var(--line-strong);
  border-radius: 14px;
  background: rgba(16,25,54,.99);
  box-shadow: var(--shadow);
}

.reply-box { margin-block-start: 20px; }
.discussion-item { position: relative; }
.discussion-item.is-reply {
  margin-inline-start: 18px;
  border-inline-start: 2px solid rgba(136,120,255,.42);
}

.discussion-item.is-reply::before {
  content: "";
  position: absolute;
  inset: 26px auto auto -19px;
  width: 17px;
  height: 15px;
  border-inline-start: 1px solid rgba(136,120,255,.38);
  border-bottom: 1px solid rgba(136,120,255,.38);
  border-radius: 0 0 0 8px;
}

.reply-context {
  margin: -2px 0 10px;
  padding: 8px 10px;
  display: grid;
  gap: 1px;
  border-radius: 11px;
  color: #d0ccff;
  background: rgba(136,120,255,.075);
}

.reply-context span { font-size: .68rem; }
.reply-context small { overflow: hidden; font-size: .61rem; text-overflow: ellipsis; white-space: nowrap; }
.replying-to {
  padding: 9px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1px solid rgba(136,120,255,.28);
  border-radius: 12px;
  background: rgba(136,120,255,.08);
  font-size: .7rem;
}

.replying-to button {
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 50%;
  color: #fff;
  background: rgba(255,255,255,.06);
}

.mention-form { position: relative; }
.mention-suggestions {
  position: absolute;
  z-index: 35;
  inset: auto 12px 70px;
  padding: 6px;
  border: 1px solid var(--line-strong);
  border-radius: 14px;
  background: rgba(9,14,34,.99);
  box-shadow: var(--shadow);
}

.mention-option {
  appearance: none;
  width: 100%;
  min-height: 42px;
  padding: 6px 9px;
  display: flex;
  align-items: center;
  gap: 9px;
  border: 0;
  border-radius: 10px;
  color: #fff;
  background: transparent;
  text-align: start;
}

.mention-option:hover,
.mention-option:focus { background: rgba(136,120,255,.12); }
.mention-avatar {
  width: 29px;
  height: 29px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: rgba(136,120,255,.2);
  font-size: .68rem;
  font-weight: 900;
}

.pagination {
  margin: 18px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: .75rem;
}

.topic-hero.forum-topic-hero { padding: 15px; }
.topic-hero.forum-topic-hero h1 { margin-block: 10px 13px; font-size: clamp(1.65rem,7.2vw,2.45rem); }
.rich-content.forum-topic-content { margin-block: 13px; }
.rich-content.forum-post-content { margin: 12px 0 10px; font-size: .88rem; line-height: 1.6; }

/* Galerie */
.gallery-page-head {
  margin-block-end: 4px;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: start;
  gap: 12px;
}
.gallery-page-head > .button { margin-block-start: 2px; }
.gallery-page-head > div { min-width: 0; }
.gallery-page-head p:not(.eyebrow) { margin-block-start: 6px; font-size: .83rem; line-height: 1.42; }
.gallery-category-section { width: 100%; min-width: 0; overflow: clip; }
.compact-section-head { margin-block-end: 10px; }
.gallery-category-tools { margin-block-end: 12px; display: grid; gap: 6px; }
.gallery-category-searchbox {
  min-width: 0;
  min-height: 48px;
  padding: 0 7px 0 13px;
  display: grid;
  grid-template-columns: 22px minmax(0,1fr) 36px;
  align-items: center;
  gap: 9px;
  border: 1px solid var(--line-strong);
  border-radius: 15px;
  background: rgba(10,16,38,.97);
  box-shadow: inset 0 1px rgba(255,255,255,.035), 0 10px 24px rgba(0,0,0,.15);
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.gallery-category-searchbox:focus-within {
  border-color: rgba(136,120,255,.7);
  background: rgba(13,20,46,.99);
  box-shadow: 0 0 0 3px rgba(136,120,255,.12), 0 12px 28px rgba(0,0,0,.2);
}
.gallery-category-search-icon { display: grid; place-items: center; color: #aeb6db; }
.gallery-category-search-icon .icon { width: 19px; height: 19px; }
.gallery-category-searchbox input {
  width: 100%;
  min-width: 0;
  height: 46px;
  padding: 0;
  border: 0;
  outline: 0;
  color: var(--text);
  background: transparent;
  font-size: .84rem;
}
.gallery-category-searchbox input::placeholder { color: #818bad; opacity: 1; }
.gallery-category-searchbox input::-webkit-search-cancel-button { display: none; }
.gallery-category-clear {
  width: 34px;
  height: 34px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 11px;
  color: #c8ceea;
  background: rgba(255,255,255,.06);
  cursor: pointer;
}
.gallery-category-clear:hover { color: #fff; background: rgba(255,255,255,.1); }
.gallery-category-clear .icon { width: 16px; height: 16px; }
.gallery-category-search-status { margin: 0 2px; color: var(--muted-2); font-size: .67rem; line-height: 1.35; }
.gallery-category-rail {
  --gallery-grid-gap: 12px;
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-flow: row;
  gap: var(--gallery-grid-gap);
  align-items: stretch;
  justify-items: stretch;
  overflow: clip;
}
.gallery-category-card {
  position: relative;
  isolation: isolate;
  width: 100%;
  min-width: 0;
  min-height: 150px;
  height: clamp(150px, 43vw, 190px);
  max-width: none;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  justify-self: stretch;
  align-self: stretch;
  grid-column: auto / span 1;
  border: 1px solid var(--line);
  border-radius: 17px;
  color: #fff;
  background: linear-gradient(145deg,rgba(31,27,78,.92),rgba(8,20,42,.98));
  box-shadow: 0 10px 24px rgba(0,0,0,.2);
  transform: translateZ(0);
  transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.gallery-category-card:hover { border-color: rgba(162,175,240,.38); }
.gallery-category-card:active { transform: scale(.975); }
.gallery-category-card.is-active {
  border-color: rgba(136,120,255,.82);
  box-shadow: 0 0 0 2px rgba(136,120,255,.14), 0 14px 30px rgba(63,49,166,.3);
}

.gallery-category-card.is-active::after {
  content: "";
  position: absolute;
  z-index: 4;
  inset: 8px 8px auto auto;
  width: 8px;
  height: 8px;
  border: 2px solid rgba(255,255,255,.8);
  border-radius: 50%;
  background: var(--cyan);
  box-shadow: 0 0 12px rgba(86,216,255,.8);
}

.gallery-category-media,
.gallery-category-overlay { position: absolute; inset: 0; }
.gallery-category-media { z-index: -2; display: grid; place-items: center; }
.gallery-category-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s cubic-bezier(.16,1,.3,1); }
.gallery-category-card:hover .gallery-category-media img { transform: scale(1.045); }
.gallery-category-emoji {
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  color: #e5e1ff;
  background:
    radial-gradient(circle at 72% 20%,rgba(86,216,255,.24),transparent 38%),
    radial-gradient(circle at 18% 75%,rgba(136,120,255,.38),transparent 44%),
    #111a3b;
  font-size: 2rem;
  text-shadow: 0 8px 24px rgba(0,0,0,.35);
}

.gallery-category-overlay {
  z-index: -1;
  background: linear-gradient(180deg,rgba(2,5,18,.02) 20%,rgba(2,5,18,.92) 100%);
}

.gallery-category-copy {
  width: 100%;
  min-width: 0;
  min-height: 66px;
  padding: 13px 12px 12px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 3px;
}
.gallery-category-copy strong {
  min-width: 0;
  min-height: 2.35em;
  overflow: hidden;
  display: -webkit-box;
  color: #fff;
  font-size: .8rem;
  line-height: 1.18;
  text-overflow: ellipsis;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.gallery-category-copy small { color: rgba(229,233,255,.76); font-size: .62rem; line-height: 1.2; }
.gallery-category-empty {
  min-height: 126px;
  padding: 22px 16px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 5px;
  border: 1px dashed rgba(159,174,237,.25);
  border-radius: 17px;
  color: var(--muted);
  background: rgba(11,17,40,.62);
  text-align: center;
}
.gallery-category-empty .icon { width: 24px; height: 24px; color: #9c8eff; }
.gallery-category-empty strong { color: var(--text-soft); font-size: .88rem; }
.gallery-category-empty p { margin: 0; font-size: .72rem; }
.gallery-listing-section { min-width: 0; }

.moderation-state {
  min-height: 72px;
  padding: 11px 12px;
  display: grid;
  grid-template-columns: 40px minmax(0,1fr);
  align-items: center;
  gap: 10px;
  border: 1px solid rgba(255,198,109,.28);
  border-radius: 15px;
  color: #ffe2ad;
  background: linear-gradient(135deg,rgba(255,198,109,.1),rgba(12,18,43,.96));
}

.moderation-state.error {
  border-color: rgba(255,113,136,.3);
  color: #ffc3ce;
  background: linear-gradient(135deg,rgba(255,113,136,.11),rgba(12,18,43,.96));
}

.moderation-state-icon {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: rgba(255,255,255,.075);
  font-weight: 900;
}

.moderation-state > span:last-child { min-width: 0; display: grid; gap: 2px; }
.moderation-state strong { color: inherit; font-size: .82rem; }
.moderation-state small { color: var(--text-soft); font-size: .72rem; line-height: 1.4; }
.moderation-state em { margin-block-start: 4px; color: inherit; font-size: .7rem; font-style: normal; line-height: 1.4; }
.moderation-actions { display: grid; gap: 8px; }
.photo-detail { padding: 0; overflow: hidden; }
.photo-stage {
  min-height: 230px;
  display: grid;
  place-items: center;
  background: #02040d;
}

.main-photo,
.photo-stage .main-photo {
  width: 100%;
  max-width: none;
  max-height: 76vh;
  margin: 0;
  object-fit: contain;
  border-radius: 0;
  background: #02040d;
}

.photo-body { padding: 17px; }
.photo-body h1 { margin: 12px 0 15px; font-size: clamp(1.75rem,8vw,2.6rem); }
.technical-panel { margin-block-start: 16px; padding-block-start: 2px; border-top: 1px solid var(--line); }
.compact-details > summary {
  min-height: 46px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  list-style: none;
  font-size: .82rem;
  font-weight: 800;
}

.compact-details > summary::-webkit-details-marker { display: none; }
.compact-details > summary .icon { width: 17px; transition: transform .15s ease; }
.compact-details[open] > summary .icon { transform: rotate(90deg); }
.tech {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}

.tech div {
  min-width: 0;
  padding: 9px;
  border-radius: 11px;
  background: rgba(255,255,255,.03);
}

.tech dt {
  color: var(--muted);
  font-size: .6rem;
  font-weight: 750;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.tech dd { margin: 3px 0 0; font-size: .78rem; overflow-wrap: anywhere; }
.technical-notes {
  margin-block-start: 9px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.03);
}

.technical-notes p { margin: 4px 0 0; color: var(--muted); }
.photo-actions { margin-block-start: 15px; display: flex; align-items: center; gap: 8px; }
.photo-actions form { margin: 0; }
.heart-button,
.icon-action {
  appearance: none;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background-color .18s ease, box-shadow .18s ease;
}

.heart-button {
  position: relative;
  isolation: isolate;
  overflow: visible;
  min-width: 80px;
  padding-inline: 14px;
  grid-auto-flow: column;
  gap: 8px;
  border: 1px solid rgba(255,99,173,.34);
  color: #ffd3e7;
  background: rgba(255,99,173,.13);
  transform: translateZ(0);
  will-change: transform;
}

.heart-button::after {
  content: "";
  position: absolute;
  z-index: 1;
  left: 27px;
  top: 50%;
  width: 12px;
  height: 12px;
  margin: -6px;
  border: 1.5px solid rgba(255,99,173,.76);
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
}

.heart-visual {
  position: relative;
  z-index: 2;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
}

.heart-glyph {
  position: relative;
  z-index: 2;
  display: block;
  color: var(--pink);
  font-size: 1.35rem;
  line-height: 1;
  filter: drop-shadow(0 0 8px rgba(255,99,173,.32));
  transform: translateZ(0);
  transform-origin: center;
  will-change: transform, filter;
}

.like-particles {
  position: absolute;
  z-index: 1;
  left: 50%;
  top: 50%;
  width: 1px;
  height: 1px;
  pointer-events: none;
}

.like-particles i {
  position: absolute;
  left: 0;
  top: 0;
  width: 5px;
  height: 5px;
  margin: -2.5px;
  border-radius: 50%;
  background: var(--pink);
  box-shadow: 0 0 8px currentColor;
  opacity: 0;
  transform: translate3d(0,0,0) scale(.2);
  will-change: transform, opacity;
}

.like-particles i:nth-child(1) { --like-x: -19px; --like-y: -17px; color: #ff63ad; }
.like-particles i:nth-child(2) { --like-x: 1px; --like-y: -24px; color: #8c7cff; background: #8c7cff; }
.like-particles i:nth-child(3) { --like-x: 20px; --like-y: -14px; color: #56d8ff; background: #56d8ff; }
.like-particles i:nth-child(4) { --like-x: 22px; --like-y: 11px; color: #ff8bc2; background: #ff8bc2; }
.like-particles i:nth-child(5) { --like-x: 0px; --like-y: 23px; color: #8c7cff; background: #8c7cff; }
.like-particles i:nth-child(6) { --like-x: -21px; --like-y: 12px; color: #56d8ff; background: #56d8ff; }

.heart-button [data-like-count] { position: relative; z-index: 2; min-width: 1ch; font-variant-numeric: tabular-nums; }
.heart-button.is-active {
  border-color: rgba(255,99,173,.58);
  background: rgba(255,99,173,.2);
  box-shadow: 0 8px 22px rgba(255,70,154,.13);
}

.heart-button:disabled { opacity: .72; cursor: wait; }
.heart-button.is-celebrating { animation: like-button-spring .74s cubic-bezier(.16,1,.3,1); }
.heart-button.is-celebrating::after { animation: like-ripple .72s cubic-bezier(.16,1,.3,1); }
.heart-button.is-celebrating .heart-glyph { animation: like-heart-spring .74s cubic-bezier(.16,1,.3,1); }
.heart-button.is-celebrating [data-like-count] { animation: like-count-rise .56s cubic-bezier(.16,1,.3,1); }
.heart-button.is-celebrating .like-particles i { animation: like-particle-flight .68s cubic-bezier(.16,.72,.26,1) both; }
.heart-button.is-celebrating .like-particles i:nth-child(2),
.heart-button.is-celebrating .like-particles i:nth-child(5) { animation-delay: 25ms; }
.heart-button.is-celebrating .like-particles i:nth-child(3),
.heart-button.is-celebrating .like-particles i:nth-child(6) { animation-delay: 50ms; }
.heart-button.is-unliking .heart-glyph { animation: like-heart-release .4s cubic-bezier(.16,1,.3,1); }
.heart-button.is-unliking [data-like-count] { animation: like-count-rise .4s cubic-bezier(.16,1,.3,1); }

@keyframes like-button-spring {
  0%,100% { transform: translateZ(0) scale(1); }
  28% { transform: translateZ(0) scale(1.075); }
  52% { transform: translateZ(0) scale(.982); }
  76% { transform: translateZ(0) scale(1.018); }
}

@keyframes like-heart-spring {
  0% { transform: translateZ(0) scale(.78) rotate(-10deg); filter: drop-shadow(0 0 0 rgba(255,99,173,0)); }
  34% { transform: translateZ(0) scale(1.42) rotate(8deg); filter: drop-shadow(0 0 15px rgba(255,99,173,.82)); }
  57% { transform: translateZ(0) scale(.92) rotate(-3deg); }
  78% { transform: translateZ(0) scale(1.08) rotate(1deg); }
  100% { transform: translateZ(0) scale(1) rotate(0); filter: drop-shadow(0 0 8px rgba(255,99,173,.4)); }
}

@keyframes like-heart-release {
  0%,100% { transform: translateZ(0) scale(1); }
  42% { transform: translateZ(0) scale(.78) rotate(-6deg); }
  74% { transform: translateZ(0) scale(1.04) rotate(1deg); }
}

@keyframes like-ripple {
  0% { opacity: .78; transform: scale(.55); }
  100% { opacity: 0; transform: scale(4.4); }
}

@keyframes like-particle-flight {
  0% { opacity: 0; transform: translate3d(0,0,0) scale(.2); }
  24% { opacity: 1; }
  100% { opacity: 0; transform: translate3d(var(--like-x),var(--like-y),0) scale(.05); }
}

@keyframes like-count-rise {
  0% { opacity: .45; transform: translateY(4px) scale(.88); }
  58% { opacity: 1; transform: translateY(-2px) scale(1.08); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

.icon-action {
  width: 46px;
  border: 1px solid var(--line);
  color: var(--text);
  background: rgba(255,255,255,.035);
  font-weight: 900;
}

.form-section {
  padding: 17px 0;
  display: grid;
  gap: 12px;
  border-bottom: 1px solid var(--line);
}

.form-section:first-child { padding-block-start: 0; }
.form-section-title,
.settings-title {
  display: grid;
  grid-template-columns: 38px minmax(0,1fr);
  align-items: start;
  gap: 9px;
}

.form-section-title h2,
.form-section-title p,
.settings-title h2,
.settings-title p { margin: 0; }
.form-section-title h2,
.settings-title h2 { font-size: 1rem; }
.form-section-title p,
.settings-title p { margin-block-start: 2px; color: var(--muted); font-size: .74rem; }
.file-drop {
  min-height: 135px;
  padding: 15px;
  place-items: center;
  align-content: center;
  border: 1px dashed rgba(158,171,255,.36);
  border-radius: 15px;
  background: linear-gradient(145deg,rgba(136,120,255,.07),rgba(86,216,255,.03));
  text-align: center;
}

.file-drop > span { margin-block-start: 5px; font-weight: 850; }
.file-drop > .field-label { margin-block-start: 0; }
.file-drop-action { color: var(--text); }
.file-drop.has-error { border-color: rgba(255,113,136,.62); background: rgba(255,113,136,.07); }
.consent-card {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.03);
}

.consent-card.has-error { border-color: rgba(255,113,136,.58); background: rgba(255,113,136,.075); }

.report-trigger .icon { width: 19px; height: 19px; }
.report-trigger:hover { border-color: rgba(255,113,136,.32); color: #ffc4ce; background: rgba(255,113,136,.08); }

.report-modal {
  position: fixed;
  z-index: 240;
  inset: 0;
  padding: 12px;
  display: grid;
  place-items: end center;
}

.report-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  opacity: 0;
  background: rgba(1,3,12,.76);
  backdrop-filter: blur(8px);
  transition: opacity .2s ease;
}

.report-sheet {
  position: relative;
  width: min(100%,520px);
  max-height: calc(100svh - 24px);
  padding: 16px;
  padding-block-end: max(16px,env(safe-area-inset-bottom));
  overflow: auto;
  border: 1px solid var(--line-strong);
  border-radius: 22px;
  opacity: 0;
  background: linear-gradient(155deg,rgba(21,30,64,.995),rgba(8,13,32,.995));
  box-shadow: 0 28px 70px rgba(0,0,0,.52);
  transform: translateY(24px) scale(.985);
  transition: opacity .2s ease, transform .25s cubic-bezier(.2,.8,.2,1);
}

.report-modal.is-open .report-backdrop { opacity: 1; }
.report-modal.is-open .report-sheet { opacity: 1; transform: translateY(0) scale(1); }
.report-sheet-head {
  display: grid;
  grid-template-columns: 42px minmax(0,1fr) 38px;
  align-items: center;
  gap: 10px;
}

.report-sheet-head h2 { font-size: 1.15rem; }
.report-sheet-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 13px;
  color: #ffc4ce;
  background: rgba(255,113,136,.12);
}

.report-close {
  appearance: none;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 12px;
  color: var(--muted);
  background: rgba(255,255,255,.045);
  cursor: pointer;
}

.report-close .icon { width: 18px; height: 18px; }
.report-intro { margin: 12px 0 14px; color: var(--muted); font-size: .78rem; line-height: 1.5; }
.report-form textarea { min-height: 88px; }
.report-field-label { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.report-field-label small { color: var(--muted-2); font-size: .66rem; font-weight: 650; }
.report-actions { display: grid; grid-template-columns: .7fr 1.3fr; gap: 8px; }
.report-actions .button { min-width: 0; padding-inline: 10px; font-size: .78rem; }
.report-actions .icon { width: 17px; height: 17px; }

.gallery-discussion-section {
  margin-block-start: 30px !important;
  padding-block-start: 19px;
  border-top: 1px solid var(--line);
}

.gallery-discussion-head { margin-block-end: 12px; }
.gallery-discussion-section .discussion-list { gap: 10px; }
.gallery-discussion-section .empty { min-height: 104px; }
.gallery-reply-box {
  margin-block-start: 18px;
  padding: 15px;
  gap: 12px;
  border-color: rgba(136,120,255,.25);
  background: linear-gradient(145deg,rgba(18,27,60,.94),rgba(9,14,34,.96));
}

.gallery-reply-heading { padding-block-end: 2px; }
.gallery-reply-box textarea { min-height: 108px; }

.consent-card span { display: grid; }

/* Profils et compte */
.profile-hero { padding: 21px 5px; text-align: center; }
.profile-avatar { position: relative; width: 104px; margin-inline: auto; }
.profile-avatar img {
  width: 104px;
  height: 104px;
  object-fit: cover;
  border: 2px solid rgba(155,143,255,.45);
  border-radius: 31px;
  background: var(--surface-2);
  box-shadow: 0 14px 34px rgba(72,60,160,.32);
}

.level-orbit {
  position: absolute;
  inset: auto -5px -5px auto;
  min-width: 32px;
  height: 32px;
  padding-inline: 6px;
  display: grid;
  place-items: center;
  border: 2px solid var(--bg);
  border-radius: 11px;
  color: #fff;
  background: linear-gradient(135deg,var(--accent),#526ff0);
  font-size: .78rem;
  font-weight: 850;
}

.profile-hero h1 { margin: 12px 0 3px; }
.profile-presence { width: max-content; margin: 6px auto 5px; }
.prefix { margin: 0; color: var(--badge); font-size: .78rem; font-weight: 800; }
.profile-hero > p:not(.prefix) { max-width: 30rem; margin: 10px auto; color: var(--muted); font-size: .86rem; }
.profile-stats {
  max-width: 340px;
  margin: 14px auto;
  display: grid;
  grid-template-columns: repeat(3,1fr);
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(255,255,255,.025);
}

.profile-stats div { padding: 9px 4px; border-inline-end: 1px solid var(--line); }
.profile-stats div:last-child { border-inline-end: 0; }
.profile-stats strong,
.profile-stats span { display: block; }
.profile-stats strong { font-size: 1rem; }
.profile-stats span { color: var(--muted); font-size: .6rem; letter-spacing: .05em; text-transform: uppercase; }
.badge-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.badge-card,
.badge-admin {
  min-width: 0;
  padding: 11px;
  display: flex;
  gap: 9px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.03);
}

.badge-card > span,
.badge-admin > span { flex: 0 0 auto; color: var(--badge); font-size: 1.25rem; }
.badge-card strong,
.badge-card small { display: block; overflow-wrap: anywhere; }
.badge-card strong { font-size: .8rem; }
.badge-card small { font-size: .64rem; }
.profile-content-empty {
  min-height: 112px;
  grid-column: 1 / -1;
}

.profile-safety-section {
  margin-block-start: 24px;
  padding-block-start: 18px;
  border-top: 1px solid var(--line);
}

.profile-safety {
  overflow: hidden;
  border: 1px solid rgba(150,166,230,.2);
  border-radius: var(--radius);
  background: linear-gradient(145deg,rgba(16,24,53,.88),rgba(8,13,31,.96));
  box-shadow: var(--shadow-sm);
}

.profile-safety > summary {
  min-height: 72px;
  padding: 12px 13px;
  display: grid;
  grid-template-columns: 42px minmax(0,1fr) 18px;
  align-items: center;
  gap: 11px;
  list-style: none;
  color: var(--text);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.profile-safety > summary::-webkit-details-marker { display: none; }
.profile-safety > summary::marker { content: ''; }
.profile-safety > summary:hover { background: rgba(136,120,255,.055); }
.profile-safety[open] > summary { border-bottom: 1px solid var(--line); }

.profile-safety-symbol {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(136,120,255,.28);
  border-radius: 13px;
  color: #d8d4ff;
  background: linear-gradient(135deg,rgba(136,120,255,.18),rgba(72,114,255,.1));
}

.profile-safety-symbol .icon { width: 21px; height: 21px; }
.profile-safety-copy { min-width: 0; display: grid; gap: 3px; text-align: start; }
.profile-safety-copy strong,
.profile-safety-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.profile-safety-copy strong { font-size: .86rem; }
.profile-safety-copy small { color: var(--muted); font-size: .68rem; font-weight: 600; }
.profile-safety-chevron {
  width: 18px;
  height: 18px;
  color: var(--muted-2);
  transition: transform .18s ease;
}
.profile-safety[open] .profile-safety-chevron { transform: rotate(90deg); }

.profile-safety-panel { padding: 13px; display: grid; gap: 14px; }
.profile-safety-note {
  margin: 0;
  padding: 10px 11px;
  border-radius: 12px;
  color: var(--muted);
  background: rgba(255,255,255,.025);
  font-size: .72rem;
  line-height: 1.45;
}
.profile-block-form { margin: 0; }
.profile-report-form {
  padding-block-start: 14px;
  border-top: 1px solid var(--line);
}
.profile-report-heading {
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  align-items: center;
  gap: 9px;
}
.profile-report-heading > span {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #ffd0da;
  background: rgba(255,113,136,.11);
}
.profile-report-heading .icon { width: 17px; height: 17px; }
.profile-report-heading div { min-width: 0; display: grid; gap: 2px; }
.profile-report-heading strong { font-size: .8rem; }
.profile-report-heading small { color: var(--muted); font-size: .66rem; line-height: 1.35; }
.settings-section { margin-block-start: 24px; }
.settings-title { margin-block-end: 9px; }
.danger-zone {
  margin-block-start: 14px;
  padding-block-start: 14px;
  border-top: 1px solid rgba(255,113,136,.24);
}

.admin-link {
  margin-block-start: 18px;
  display: grid;
  grid-template-columns: 28px minmax(0,1fr) 20px;
  align-items: center;
  gap: 9px;
}

.admin-link span { min-width: 0; display: grid; }
.pending-card {
  min-height: 76px;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 11px;
  padding: 14px;
}

.pending-card-main { min-width: 0; display: grid; gap: 5px; }
.pending-card-title { display: block; overflow: hidden; font-size: .9rem; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.pending-card-date { display: flex; align-items: center; gap: 5px; color: var(--muted); font-size: .68rem; line-height: 1.35; }
.pending-card-date .icon { width: 14px; height: 14px; color: var(--muted-2); }
.pending-card > .pill { max-width: 118px; justify-content: center; text-align: center; }
.pending-card p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: .78rem; }
.timeline { padding-inline-start: 5px; display: grid; }
.timeline-item {
  position: relative;
  padding: 10px 0 10px 22px;
  display: grid;
  grid-template-columns: 66px minmax(0,1fr);
  gap: 8px;
  border-inline-start: 1px solid var(--line);
}

.timeline-item::before {
  content: "";
  position: absolute;
  inset: 18px auto auto -5px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--accent);
}

.timeline-item div { display: grid; }
.xp {
  align-self: start;
  padding: 4px 6px;
  border-radius: 8px;
  font-size: .66rem;
  font-weight: 850;
  text-align: center;
}

.xp.positive { color: #bdf6df; background: rgba(88,223,176,.11); }
.xp.negative { color: #ffc3cd; background: rgba(255,113,136,.11); }
.avatar-editor { display: grid; gap: 12px; }
.avatar-editor-current {
  padding: 12px;
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(5,10,30,.45);
}

.avatar-editor-current img {
  width: 68px;
  height: 68px;
  flex: 0 0 68px;
  object-fit: cover;
  border: 1px solid rgba(139,168,255,.3);
  border-radius: 18px;
}

.avatar-editor-current div { display: grid; gap: 2px; }
.avatar-editor-current strong { font-size: .9rem; }
.avatar-editor-current small { font-size: .68rem; line-height: 1.4; }

/* Messagerie */
.screen-chat { --chat-head-height: 62px; --composer-height: 60px; }
.screen-chat .page {
  height: 100svh;
  min-height: 100svh;
  padding:
    calc(var(--topbar-height) + env(safe-area-inset-top) + var(--chat-head-height))
    var(--page-gutter)
    calc(var(--bottom-nav-height) + env(safe-area-inset-bottom) + var(--composer-height));
  overflow: hidden;
}

.screen-chat .page-content {
  min-height: 0;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}

.screen-chat .page-content > * + * { margin-block-start: 0; }
.conversation-card {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg,rgba(17,26,57,.87),rgba(8,13,32,.92));
  box-shadow: var(--shadow-sm);
}

.conversation-card.archived { opacity: .68; }
.conversation-main {
  min-height: 78px;
  padding: 11px;
  display: grid;
  grid-template-columns: 48px minmax(0,1fr) 18px;
  align-items: center;
  gap: 10px;
  color: var(--text);
}

.conversation-avatar { position: relative; }
.conversation-avatar img {
  width: 48px;
  height: 48px;
  object-fit: cover;
  border-radius: 15px;
  background: var(--surface-2);
}

.conversation-avatar b {
  position: absolute;
  inset: -4px -4px auto auto;
  min-width: 20px;
  height: 20px;
  padding-inline: 4px;
  display: grid;
  place-items: center;
  border: 2px solid var(--surface);
  border-radius: 999px;
  color: #fff;
  background: var(--danger);
  font-size: .6rem;
}

.conversation-copy { min-width: 0; }
.conversation-copy > div { display: flex; align-items: center; justify-content: space-between; gap: 7px; }
.conversation-copy h2 { overflow: hidden; font-size: .9rem; text-overflow: ellipsis; white-space: nowrap; }
.conversation-copy time { color: var(--muted-2); font-size: .61rem; white-space: nowrap; }
.conversation-copy p { margin: 3px 0; overflow: hidden; color: var(--muted); font-size: .77rem; text-overflow: ellipsis; white-space: nowrap; }
.conversation-copy small { display: block; font-size: .63rem; }
.conversation-control {
  appearance: none;
  width: 100%;
  min-height: 36px;
  border: 0;
  border-top: 1px solid var(--line);
  color: var(--muted);
  background: rgba(255,255,255,.02);
  font-size: .68rem;
  font-weight: 750;
}

.privacy-note {
  margin-block-start: 18px;
  padding: 13px;
  display: grid;
  grid-template-columns: 28px minmax(0,1fr);
  gap: 9px;
  border: 1px solid rgba(86,216,255,.15);
  border-radius: 14px;
  background: rgba(86,216,255,.04);
}

.privacy-note strong,
.privacy-note p { margin: 0; }
.privacy-note p { margin-block-start: 2px; color: var(--muted); font-size: .73rem; }
.chat-head {
  position: fixed;
  z-index: 90;
  inset-inline: 0;
  top: calc(var(--topbar-height) + env(safe-area-inset-top));
  width: min(100%, 767px);
  min-height: var(--chat-head-height);
  margin-inline: auto;
  padding: 9px var(--page-gutter);
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  background: rgba(5,8,22,.96);
  backdrop-filter: blur(16px);
}

.chat-head > img {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 12px;
  background: var(--surface-2);
}

.chat-person {
  min-width: 0;
  flex: 1 1 auto;
  display: grid;
  align-content: center;
  gap: 4px;
}

.chat-head h1 {
  overflow: hidden;
  font-size: .98rem;
  line-height: 1.08;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-person-meta {
  min-width: 0;
  height: 18px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: .64rem;
  line-height: 1;
}

.chat-context {
  min-width: 0;
  height: 18px;
  display: inline-flex;
  align-items: center;
  overflow: hidden;
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-person-meta .chat-presence {
  height: 18px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
}

.chat-person-meta .presence-badge {
  height: 18px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: inherit;
  line-height: 1;
}

.chat-person-meta .presence-badge.is-compact span {
  font-size: inherit;
  line-height: 1;
}

.chat-person-meta .presence-badge i { width: 6px; height: 6px; }
.chat-report-menu { position: relative; flex: 0 0 auto; margin-inline-start: auto; }
.chat-report-menu > summary { list-style: none; }
.chat-report-menu > summary::-webkit-details-marker { display: none; }
.chat-report-button {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--muted);
  background: rgba(255,255,255,.035);
  cursor: pointer;
  transition: color .18s ease, border-color .18s ease, background-color .18s ease, transform .18s ease;
}

.chat-report-button .icon { width: 18px; height: 18px; }
.chat-report-menu[open] .chat-report-button {
  border-color: rgba(255,113,136,.4);
  color: #ffc4ce;
  background: rgba(255,113,136,.1);
  transform: translateY(1px);
}

.chat-report-popover {
  position: absolute;
  z-index: 95;
  inset: 48px 0 auto auto;
  width: min(calc(100vw - (var(--page-gutter) * 2)), 370px);
  max-height: min(64svh, 540px);
  padding: 14px;
  overflow-y: auto;
  border: 1px solid rgba(158,174,239,.24);
  border-radius: 17px;
  background: rgba(9,14,35,.99);
  box-shadow: 0 24px 58px rgba(0,0,0,.46);
  backdrop-filter: blur(18px);
  animation: chat-report-open .2s cubic-bezier(.16,1,.3,1);
}

.chat-report-head { display: grid; grid-template-columns: 36px minmax(0,1fr); align-items: center; gap: 9px; }
.chat-report-head > span {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #ffc4ce;
  background: rgba(255,113,136,.1);
}

.chat-report-head > span .icon { width: 18px; }
.chat-report-head p { margin: 0; color: #f2a6b5; font-size: .55rem; font-weight: 900; letter-spacing: .13em; }
.chat-report-head h2 { margin: 2px 0 0; font-size: .94rem; }
.chat-report-intro { margin: 10px 0 12px; color: var(--muted); font-size: .71rem; line-height: 1.45; }
.chat-report-form { gap: 10px; }
.chat-report-form input,
.chat-report-form select { min-height: 42px; }
.chat-report-form textarea { min-height: 78px; }

@keyframes chat-report-open {
  from { opacity: 0; transform: translateY(-7px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.chat {
  min-height: 0;
  flex: 1 1 auto;
  padding: 14px 0 12px;
  overflow-y: auto;
  overscroll-behavior: contain;
  display: flex;
  flex-direction: column;
  gap: 7px;
  scroll-padding-block: 14px;
  background:
    radial-gradient(circle at 100% 0,rgba(86,216,255,.035),transparent 38%),
    radial-gradient(circle at 0 100%,rgba(136,120,255,.035),transparent 42%);
}

.chat::before { content: ""; margin-block-start: auto; }
.bubble {
  max-width: 84%;
  padding: 9px 11px;
  border-radius: 15px;
  background: var(--surface-2);
  box-shadow: 0 5px 14px rgba(0,0,0,.12);
}

.bubble.mine { align-self: flex-end; border-end-end-radius: 5px; background: linear-gradient(135deg,#675bd9,#5069ca); }
.bubble.theirs { align-self: flex-start; border-end-start-radius: 5px; }
.bubble p { margin: 0; font-size: .86rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.bubble footer { margin-block-start: 4px; display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.bubble footer form { margin: 0; }
.bubble small { color: rgba(255,255,255,.66); font-size: .59rem; }
.bubble-delete {
  appearance: none;
  width: 25px;
  height: 25px;
  border: 0;
  border-radius: 8px;
  color: rgba(255,255,255,.62);
  background: transparent;
  font-size: 1rem;
}

.composer {
  position: fixed;
  z-index: 85;
  inset: auto 0 calc(var(--bottom-nav-height) + env(safe-area-inset-bottom));
  width: min(100%,767px);
  margin-inline: auto;
  padding: 7px var(--page-gutter);
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: end;
  gap: 7px;
  border-top: 1px solid var(--line);
  background: rgba(6,9,24,.97);
  backdrop-filter: blur(16px);
}

.composer textarea { min-height: 44px; max-height: 116px; padding-block: 10px; }
.composer .button { width: 44px; min-height: 44px; padding: 0; }
.chat-empty { margin: auto; padding: 42px 18px; color: var(--muted); text-align: center; }
.chat-empty span { font-size: 1.7rem; }
.screen-chat .site-footer { display: none; }

/* Notifications */
.notification-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: rgba(13,20,48,.82);
}

.notification-card.unread {
  border-color: rgba(86,216,255,.23);
  background: linear-gradient(135deg,rgba(86,216,255,.055),rgba(136,120,255,.07));
}

.notification-card.unread::before {
  content: "";
  position: absolute;
  inset: 14px auto 14px 0;
  width: 3px;
  border-radius: 0 999px 999px 0;
  background: var(--cyan);
}

.notification-open { min-width: 0; }
.notification-main {
  appearance: none;
  width: 100%;
  border: 0;
  text-align: inherit;
  background: transparent;
  cursor: pointer;
  min-width: 0;
  padding: 11px 7px 11px 12px;
  display: grid;
  grid-template-columns: 36px minmax(0,1fr) 17px;
  align-items: center;
  gap: 9px;
  color: var(--text);
}

.notification-main > span:nth-child(2) { min-width: 0; display: grid; }
.notification-symbol {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #dce0ff;
  background: rgba(136,120,255,.12);
  font-weight: 900;
}

.notification-main small {
  color: #aab5ff;
  font-size: .59rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.notification-main strong { margin-block-start: 1px; overflow-wrap: anywhere; font-size: .82rem; }
.notification-main p { margin: 2px 0; color: var(--muted); font-size: .73rem; line-height: 1.38; }
.notification-main time { color: var(--muted-2); font-size: .6rem; }
.notification-card > form { display: grid; }
.notification-delete {
  appearance: none;
  width: 40px;
  border: 0;
  border-inline-start: 1px solid var(--line);
  color: var(--muted);
  background: transparent;
  font-size: 1.1rem;
}

/* Administration */
.screen-admin { --page-gutter: 11px; }
.screen-admin .page { padding-block-start: calc(var(--topbar-height) + env(safe-area-inset-top)); }
.screen-admin .page-content > * + * { margin-block-start: 15px; }
.screen-admin .site-footer { margin-block-start: 34px; }
.admin-dock {
  position: sticky;
  z-index: 50;
  top: calc(var(--topbar-height) + env(safe-area-inset-top));
  margin: 0 calc(var(--page-gutter) * -1) 15px;
  padding: 0 var(--page-gutter) 9px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg,rgba(5,8,22,.995),rgba(7,12,30,.97));
  box-shadow: 0 10px 26px rgba(0,0,0,.2);
  backdrop-filter: blur(18px) saturate(125%);
}

.admin-toolbar {
  min-height: 54px;
  margin: 0 calc(var(--page-gutter) * -1) 8px;
  padding: 7px var(--page-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  border-bottom: 1px solid rgba(150,166,230,.12);
}

.admin-toolbar-title {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.admin-toolbar-icon {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #cdc8ff;
  background: rgba(136,120,255,.12);
}

.admin-toolbar-icon .icon { width: 19px; height: 19px; }
.admin-toolbar-title > span:last-child { min-width: 0; display: grid; }
.admin-toolbar-title small { color: #8e98c2; font-size: .54rem; font-weight: 900; letter-spacing: .12em; }
.admin-toolbar-title strong { overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-menu { position: relative; flex: 0 0 auto; }
.admin-menu > summary {
  min-height: 36px;
  padding: 0 9px;
  display: flex;
  align-items: center;
  gap: 6px;
  list-style: none;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: #dce0fb;
  background: rgba(255,255,255,.035);
  font-size: .67rem;
  font-weight: 800;
}

.admin-menu > summary::-webkit-details-marker { display: none; }
.admin-menu > summary .icon { width: 18px; }
.admin-alert-badge {
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  display: inline-grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 999px;
  color: #fff;
  background: linear-gradient(145deg,#ff557e,#ff784f);
  box-shadow: 0 5px 14px rgba(255,77,111,.3);
  font-size: .58rem;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.admin-alert-badge.is-empty { display: none; }
.admin-alert-total { margin-inline-start: 1px; }
@media (prefers-reduced-motion: no-preference) {
  .admin-alert-badge:not(.is-empty) { animation: admin-alert-pulse 2.8s ease-in-out infinite; }
}
@keyframes admin-alert-pulse {
  0%,72%,100% { transform: scale(1); box-shadow: 0 5px 14px rgba(255,77,111,.28); }
  82% { transform: scale(1.12); box-shadow: 0 5px 18px rgba(255,77,111,.5); }
}
.admin-menu-panel {
  position: absolute;
  z-index: 70;
  inset: 43px 0 auto auto;
  width: min(88vw,330px);
  max-height: 64svh;
  padding: 8px;
  overflow: auto;
  border: 1px solid var(--line-strong);
  border-radius: 16px;
  background: rgba(10,15,37,.995);
  box-shadow: var(--shadow);
}

.admin-menu-panel p {
  margin: 8px 7px 4px;
  color: var(--muted-2);
  font-size: .56rem;
  font-weight: 900;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.admin-menu-panel a {
  min-height: 41px;
  padding: 7px 8px;
  display: grid;
  grid-template-columns: 22px minmax(0,1fr) auto 16px;
  align-items: center;
  gap: 7px;
  border-radius: 10px;
  color: #cad0ed;
  font-size: .73rem;
  font-weight: 730;
}

.admin-menu-panel a.active { color: #fff; background: rgba(136,120,255,.14); }
.admin-menu-panel a > .icon:last-child { width: 15px; color: var(--muted-2); }
.admin-menu-panel .admin-alert-badge { justify-self: end; }
.screen-admin .admin-nav {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 5px;
  overflow: visible;
}

.screen-admin .admin-nav a {
  position: relative;
  min-width: 0;
  min-height: 54px;
  padding: 6px 2px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--muted);
  background: rgba(255,255,255,.027);
  font-size: .55rem;
  font-weight: 750;
  line-height: 1.12;
  text-align: center;
}

.screen-admin .admin-nav a .icon { width: 18px; height: 18px; }
.screen-admin .admin-nav a span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-alert-quick { position: absolute; top: 4px; right: 5px; min-width: 18px; height: 18px; padding-inline: 4px; font-size: .54rem; }
.screen-admin .admin-nav a.active {
  border-color: rgba(136,120,255,.44);
  color: #fff;
  background: linear-gradient(145deg,rgba(136,120,255,.18),rgba(64,115,255,.1));
}

.compact-head { margin: 0 1px 12px; }
.compact-head h1 { font-size: clamp(1.85rem,8.5vw,2.55rem); }
.compact-head p:not(.eyebrow) { margin-block-start: 4px; font-size: .8rem; }
.admin-metric-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}

.admin-metric {
  min-height: 96px;
  padding: 11px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: linear-gradient(145deg,rgba(17,26,57,.85),rgba(8,13,32,.9));
}

.admin-metric > span { margin-block-end: auto; color: #aab5ff; font-size: .84rem; font-weight: 900; }
.admin-metric strong { font-size: 1.24rem; }
.admin-metric small { font-size: .63rem; }
.admin-metric.attention {
  border-color: rgba(255,113,136,.22);
  background: linear-gradient(145deg,rgba(255,113,136,.065),rgba(8,13,32,.92));
}

.admin-shortcuts {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}

.admin-shortcuts a { min-height: 96px; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; }
.admin-shortcuts a > span { margin-block-end: auto; color: #aaa2ff; font-size: .58rem; font-weight: 850; }
.admin-shortcuts strong { font-size: .82rem; }
.admin-shortcuts small { font-size: .62rem; }
.security-row,
.admin-list-row { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.security-row { justify-content: flex-start; }
.security-dot {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--warning);
  box-shadow: 0 0 0 4px rgba(255,198,109,.08);
}

.security-row div,
.admin-list-row div { min-width: 0; display: grid; }
.admin-list-row time { flex: 0 0 auto; color: var(--muted); font-size: .64rem; text-align: end; }
.admin-section { padding: 0; overflow: hidden; }
.admin-settings { display: grid; gap: 9px; }
.admin-section-head {
  padding: 12px;
  display: grid;
  grid-template-columns: 36px minmax(0,1fr);
  align-items: center;
  gap: 9px;
  border-bottom: 1px solid var(--line);
}

.admin-section-head > span {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 11px;
  color: #c9c4ff;
  background: rgba(136,120,255,.11);
}

.admin-section-head h2,
.admin-section-head p { margin: 0; }
.admin-section-head h2 { font-size: .94rem; }
.admin-section-head p { margin-block-start: 1px; color: var(--muted); font-size: .67rem; }
.compact-form { padding: 12px; gap: 10px; }
.toggle-list { display: grid; }
.toggle-control {
  min-height: 60px;
  padding: 9px 12px;
  display: grid;
  grid-template-columns: minmax(0,1fr) 46px;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
}

.toggle-control:last-child { border-bottom: 0; }
.toggle-control > span { display: grid; gap: 1px; }
.toggle-control strong { font-size: .79rem; }
.toggle-control small { font-size: .63rem; line-height: 1.32; }
.toggle-control input { position: absolute; opacity: 0; pointer-events: none; }
.toggle-control i {
  position: relative;
  width: 44px;
  height: 26px;
  border: 1px solid #384364;
  border-radius: 999px;
  background: #222b49;
  transition: background-color .16s ease, border-color .16s ease;
}

.toggle-control i::after {
  content: "";
  position: absolute;
  inset: 3px auto auto 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #f1f2ff;
  box-shadow: 0 2px 6px rgba(0,0,0,.3);
  transition: transform .16s ease;
}

.toggle-control input:checked + i { border-color: rgba(88,223,176,.45); background: linear-gradient(90deg,#655ce9,#43baa8); }
.toggle-control input:checked + i::after { transform: translateX(18px); }
.toggle-control input:focus-visible + i { outline: 3px solid rgba(86,216,255,.4); outline-offset: 2px; }
.xp-grid {
  padding: 12px;
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 6px;
}

.xp-grid label {
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.02);
}

.xp-grid label > span { color: var(--muted); font-size: .61rem; font-weight: 800; }
.xp-grid input { min-height: 43px; padding: 6px; font-size: 1rem; font-weight: 850; text-align: center; }
.xp-grid small { display: block; text-align: center; font-size: .55rem; }
.admin-sticky-actions {
  position: sticky;
  z-index: 30;
  bottom: calc(var(--bottom-nav-height) + env(safe-area-inset-bottom) + 4px);
  padding: 7px;
  border: 1px solid var(--line-strong);
  border-radius: 15px;
  background: rgba(8,13,32,.95);
  box-shadow: var(--shadow);
  backdrop-filter: blur(14px);
}

.admin-sticky-actions .button { min-height: 48px; }
.admin-filter {
  padding: 11px;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}

.admin-filter label { gap: 4px; font-size: .66rem; }
.admin-filter select { min-height: 44px; padding: 8px 9px; }
.admin-filter .button { grid-column: 1 / -1; min-height: 44px; }
.admin-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  text-align: center;
}

.admin-empty > span {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #abb6ff;
  background: rgba(136,120,255,.1);
}

.admin-empty strong { font-size: .9rem; }
.admin-empty p { margin: 0; color: var(--muted); font-size: .7rem; }
.admin-create-panel,
.admin-record,
.admin-user-card { padding: 0; overflow: hidden; }
.admin-create-panel { margin-block-end: 12px; }
.admin-create-panel > summary,
.admin-record > summary,
.admin-user-card > summary {
  min-height: 62px;
  padding: 9px 11px;
  display: grid;
  align-items: center;
  gap: 9px;
  list-style: none;
  cursor: pointer;
}

.admin-create-panel > summary { grid-template-columns: 38px minmax(0,1fr) 17px; }
.admin-record > summary { grid-template-columns: 38px minmax(0,1fr) 17px; }
.admin-user-card > summary { grid-template-columns: 40px minmax(0,1fr) 17px; }
.admin-create-panel > summary::-webkit-details-marker,
.admin-record > summary::-webkit-details-marker,
.admin-user-card > summary::-webkit-details-marker { display: none; }
.admin-create-panel > summary > span:nth-child(2),
.admin-record > summary > span:nth-child(2),
.admin-user-card > summary > span:nth-child(2) { min-width: 0; display: grid; gap: 1px; }
.admin-create-panel > summary strong,
.admin-record > summary strong,
.admin-user-card > summary strong { overflow: hidden; font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-create-panel > summary small,
.admin-record > summary small,
.admin-user-card > summary small { overflow: hidden; font-size: .62rem; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.admin-record-icon {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #c6c0ff;
  background: rgba(136,120,255,.1);
}

.admin-record-icon .icon { width: 19px; height: 19px; }
.admin-create-panel > summary > .icon,
.admin-record > summary > .icon,
.admin-user-card > summary > .icon { width: 16px; color: var(--muted-2); transition: transform .15s ease; }
.admin-create-panel[open] > summary > .icon,
.admin-record[open] > summary > .icon,
.admin-user-card[open] > summary > .icon { transform: rotate(90deg); }
.admin-record-form,
.admin-user-panel {
  padding: 11px;
  display: grid;
  gap: 11px;
  border-top: 1px solid var(--line);
  background: rgba(255,255,255,.012);
}

.admin-create-panel .admin-record-form form.card {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.admin-user-avatar {
  position: relative;
  width: 40px;
  height: 40px;
  overflow: visible;
  display: grid;
  place-items: center;
  border: 1px solid rgba(168,180,239,.18);
  border-radius: 12px;
  background: linear-gradient(135deg,#7b6bff,#3f78fa);
  font-size: .8rem;
  font-weight: 900;
}

.admin-user-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 11px; }
.admin-user-avatar > span { width: 100%; height: 100%; display: grid; place-items: center; border-radius: 11px; }
.admin-user-meta { margin-block-end: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.admin-user-meta span {
  max-width: 100%;
  padding: 4px 7px;
  overflow: hidden;
  border-radius: 999px;
  color: var(--muted);
  background: rgba(255,255,255,.04);
  font-size: .59rem;
  text-overflow: ellipsis;
}

.admin-user-form { display: grid; gap: 7px; }
.admin-user-form section {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.016);
}

.admin-user-form h3 { margin: 0 0 7px; font-size: .73rem; }
.quick-actions,
.account-state-actions {
  margin-block-start: 7px;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 5px;
}

.quick-actions .button,
.account-state-actions .button { min-height: 39px; padding: 7px; font-size: .62rem; }
.success-button { border: 1px solid rgba(88,223,176,.26); color: #b4f5db; background: rgba(88,223,176,.11); }
.warning-button { border: 1px solid rgba(255,198,109,.24); color: #ffdda1; background: rgba(255,198,109,.09); }
.admin-content-card { display: grid; gap: 9px; }
.admin-content-card > h2,
.admin-content-card > p { margin: 0; }
.admin-content-card h2 { font-size: 1rem; }
.admin-content-card p { color: var(--muted); font-size: .75rem; }
.admin-action-form {
  margin-block-start: 1px;
  padding-block-start: 10px;
  border-top: 1px solid var(--line);
}

.inline-form {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 6px;
}

.inline-form input,
.inline-form select { width: auto; min-width: 105px; flex: 1 1 120px; }
.admin-edit-panel { padding-block-start: 9px; border-top: 1px solid var(--line); }
.admin-edit-panel > summary {
  min-height: 40px;
  display: flex;
  align-items: center;
  list-style: none;
  color: #dce0fb;
  font-size: .74rem;
  font-weight: 850;
}

.admin-edit-panel > summary::-webkit-details-marker { display: none; }
.admin-edit-panel[open] > summary { margin-block-end: 9px; }
.admin-edit-panel > .form {
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.02);
}

.category-admin-cover { width: 100%; max-height: 170px; object-fit: cover; border: 1px solid var(--line); border-radius: 13px; background: #02040d; }
.category-admin-fallback {
  min-height: 112px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 5px;
  border: 1px dashed var(--line-strong);
  border-radius: 13px;
  background: radial-gradient(circle at 50% 40%,rgba(136,120,255,.16),transparent 58%),rgba(255,255,255,.016);
}

.category-admin-fallback span { font-size: 2rem; }
.category-admin-fallback small { font-size: .64rem; }
.admin-users-overview {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 6px;
}

.admin-users-overview > span {
  min-width: 0;
  padding: 9px;
  display: grid;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.022);
  text-align: center;
}

.admin-users-overview strong { font-size: .9rem; }
.admin-users-overview small { font-size: .57rem; text-transform: uppercase; letter-spacing: .05em; }

.presence-dot {
  position: absolute;
  z-index: 3;
  inset: auto -2px -2px auto;
  width: 11px;
  height: 11px;
  border: 2px solid var(--surface);
  border-radius: 50%;
  background: #687292;
}

.presence-dot.is-online { background: var(--success); box-shadow: 0 0 10px rgba(88,223,176,.52); }
.member-avatar-wrap { position: relative; width: 46px; height: 46px; flex: 0 0 46px; }
.member-avatar-wrap > img { width: 100%; height: 100%; object-fit: cover; border-radius: 14px; background: var(--surface-2); }
.conversation-status-line { min-width: 0; display: flex; align-items: center; gap: 8px; }
.conversation-status-line > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.badge-preview { display: flex; align-items: center; gap: 10px; }
.badge-preview > span {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line-strong);
  border: 1px solid color-mix(in srgb,var(--badge) 45%,transparent);
  border-radius: 13px;
  color: var(--badge);
  background: rgba(136,120,255,.1);
  background: color-mix(in srgb,var(--badge) 12%,transparent);
  font-size: 1.2rem;
}

.badge-preview > div { display: grid; }
.legal-editor textarea { min-height: 170px; }
.permission-grid { display: grid; gap: 6px; }
.permission-grid .check {
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: rgba(255,255,255,.015);
}

.permission-grid .check span { display: grid; }
.admin-row-form { display: grid; gap: 8px; }
.compact-list { gap: 7px; }
.compact-search { grid-template-columns: minmax(0,1fr) 46px; }
.compact-search .button { padding: 0; }

/* Adaptation des écrans */
@media (min-width: 440px) {
  :root { --page-gutter: 16px; }
  .stats { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .stats > div { padding: 12px 8px; text-align: center; }
  .form-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .admin-row-form {
    grid-template-columns: minmax(74px,.8fr) minmax(100px,1.3fr) 70px 70px auto;
    align-items: end;
  }
  .admin-row-form > strong { align-self: center; }
}

@media (min-width: 560px) and (max-width: 767px) {
  :root { --page-gutter: 22px; }
  .hero-overlay { padding-inline: 26px; }
  .photo-grid.large { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .member-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .category-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .quick-grid { gap: 10px; }
  .badge-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .screen-admin { --page-gutter: 16px; }
}

@media (min-width: 620px) and (max-width: 767px) {
  .forum-category-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .forum-category-card { grid-template-columns: 46px minmax(0,1fr) 40px; }
  .forum-category-visual { width: 46px; height: 46px; }
  .forum-category-meta small { display: none; }
}

@media (max-width: 390px) {
  :root { --page-gutter: 12px; }
  .brand { grid-template-columns: 37px minmax(0,max-content); gap: 6px; }
  .brand-mark { width: 37px; height: 37px; border-radius: 0; background: transparent; border: 0; box-shadow: none; }
  .brand-mark img { width: 32px; height: 32px; }
  .brand-copy { grid-template-columns: minmax(0,max-content) 20px; gap: 4px; }
  .brand-copy strong { font-size: .68rem; letter-spacing: .045em; }
  .brand-copy small { width: 20px; height: 18px; font-size: .54rem; }
  .topbar { gap: 6px; }
  .top-actions { gap: 4px; }
  .top-login { padding-inline: 9px; font-size: .72rem; }
  .icon-link { width: 40px; height: 40px; }
  .page-head { align-items: flex-start; }
  .page-head > .button { padding-inline: 10px; }
  .hero .actions { grid-template-columns: 1fr; }
  .hero .actions .button { width: 100%; }
  .topic-author { grid-template-columns: 43px minmax(0,1fr); }
  .topic-author time { grid-column: 2; text-align: start; }
  .action-popover { width: calc(100vw - 56px); }
  .badge-grid { grid-template-columns: 1fr; }
  .screen-admin { --page-gutter: 9px; }
  .admin-menu > summary span { display: none; }
  .admin-menu > summary { width: 36px; padding: 0; justify-content: center; }
  .xp-grid { grid-template-columns: 1fr; }
  .admin-filter { grid-template-columns: 1fr; }
  .admin-filter .button { grid-column: auto; }
}


@media (max-width: 360px) {
  .gallery-category-rail { --gallery-grid-gap: 10px; }
  .gallery-category-card { min-height: 142px; height: 142px; border-radius: 15px; }
  .gallery-category-copy { min-height: 62px; padding: 11px 10px 10px; }
  .gallery-category-copy strong { font-size: .75rem; }
  .gallery-category-copy small { font-size: .59rem; }
  .gallery-page-head { gap: 8px; }
  .gallery-page-head > .button { min-height: 38px; padding-inline: 9px; }
}

@media (max-width: 340px) {
  .brand-copy strong { max-width: 84px; }
  .top-login { padding-inline: 7px; font-size: .68rem; }
  .bottom-nav a { font-size: .58rem; }
  .quick-grid { grid-template-columns: 1fr; }
  .tech { grid-template-columns: 1fr; }
  .forum-category-card { grid-template-columns: 44px minmax(0,1fr) 38px; gap: 8px; padding: 9px; }
  .forum-category-visual { width: 44px; height: 44px; border-radius: 13px; }
  .forum-category-meta small { display: none; }
  .forum-page-head > .button { padding-inline: 8px; }
}

@media (min-width: 768px) {
  body {
    min-height: 100vh;
    overflow: hidden;
    display: grid;
    place-items: center;
  }

  .mobile-app { display: none !important; }
  .desktop-gate {
    position: relative;
    width: min(680px,90vw);
    padding: 44px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .desktop-gate > img { width: 132px; filter: drop-shadow(0 18px 35px rgba(100,85,255,.34)); }
  .desktop-gate .eyebrow { margin-block-start: 22px; }
  .desktop-gate h1 { max-width: 15ch; margin: 8px 0 12px; font-size: 2.45rem; }
  .desktop-gate > p:not(.eyebrow) { max-width: 38rem; margin: 0; color: var(--muted); font-size: 1rem; }
  .desktop-url {
    margin-block-start: 17px;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 12px;
    color: #d7d9ff;
    background: rgba(255,255,255,.035);
  }

  .desktop-stars {
    position: absolute;
    z-index: -1;
    width: 430px;
    height: 430px;
    border-radius: 50%;
    background: radial-gradient(circle,rgba(105,82,255,.18),transparent 68%);
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .hero video { display: none; }
}

@media (prefers-contrast: more) {
  :root {
    --line: rgba(190,200,245,.32);
    --line-strong: rgba(210,218,255,.5);
    --muted: #c1c8e2;
    --muted-2: #a8b0cf;
  }
}

@media (forced-colors: active) {
  .button,
  .card,
  .bottom-nav,
  .topbar,
  input,
  select,
  textarea { border: 1px solid ButtonText; }
}

/* V27 — Une page de catégorie n'affiche que les photographies qui lui appartiennent. */
.screen-gallery .page,
.screen-gallery .page-content,
.gallery-page-head,
.gallery-listing-section {
  max-width: 100%;
  overflow-x: clip;
}

.gallery-page-head.is-category-view {
  width: 100%;
  margin-block-end: 2px;
}

.gallery-page-head.is-category-view > div {
  width: 100%;
  max-width: 100%;
}

.gallery-category-back {
  width: max-content;
  max-width: 100%;
  min-height: 34px;
  margin-block-end: 10px;
  padding: 5px 9px 5px 7px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--text-soft);
  background: rgba(12,19,44,.82);
  font-size: .7rem;
  font-weight: 800;
  line-height: 1;
  box-shadow: inset 0 1px rgba(255,255,255,.035);
}

.gallery-category-back .icon {
  width: 16px;
  height: 16px;
  transform: rotate(180deg);
}

.gallery-category-back:hover {
  border-color: rgba(136,120,255,.48);
  color: #fff;
  background: rgba(136,120,255,.12);
}

.gallery-page-head.is-category-view h1 {
  max-width: 100%;
  overflow-wrap: anywhere;
}

.gallery-listing-section.is-category-listing {
  width: 100%;
  min-width: 0;
  margin-block-start: 16px;
}

.gallery-listing-head {
  min-width: 0;
  align-items: center;
}

.gallery-listing-head > div { min-width: 0; }

.gallery-result-count {
  flex: 0 0 auto;
  min-height: 30px;
  padding: 5px 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--text-soft);
  background: rgba(12,19,44,.88);
  font-size: .66rem;
  font-weight: 800;
  white-space: nowrap;
}

.gallery-category-photo-empty {
  min-height: 190px;
  padding-inline: 18px;
}

.gallery-category-photo-empty .button {
  width: min(100%, 260px);
  margin-block-start: 8px;
}

@media (max-width: 390px) {
  .gallery-page-head.is-category-view {
    grid-template-columns: minmax(0,1fr) auto;
    gap: 8px;
  }

  .gallery-page-head.is-category-view > .button {
    min-height: 38px;
    padding-inline: 9px;
  }
}

/* V28 — Médias adaptatifs, aperçus homogènes et visionneuse plein écran. */
img { image-orientation: from-image; }

/* Les couvertures de catégories gardent une géométrie stable tout en affichant
   l’image entière sur un fond ambiant dérivé du même visuel. */
.gallery-category-card {
  min-height: 150px;
  height: auto;
  aspect-ratio: 1 / 1;
}

.gallery-category-media {
  overflow: hidden;
  background: #030612;
}

.gallery-category-media img {
  backface-visibility: hidden;
  will-change: transform;
}

.gallery-category-backdrop {
  position: absolute;
  z-index: 0;
  inset: -12%;
  width: 124% !important;
  height: 124% !important;
  object-fit: cover !important;
  object-position: center;
  opacity: .72;
  filter: blur(18px) brightness(.58) saturate(1.15);
  transform: scale(1.08);
}

.gallery-category-image {
  position: absolute;
  z-index: 1;
  inset: 7px 7px 54px;
  width: calc(100% - 14px) !important;
  height: calc(100% - 61px) !important;
  object-fit: contain !important;
  object-position: center;
  filter: drop-shadow(0 10px 18px rgba(0,0,0,.34));
  transform: scale(1);
}

.gallery-category-card:hover .gallery-category-backdrop { transform: scale(1.14); }
.gallery-category-card:hover .gallery-category-image { transform: scale(1.025); }
.gallery-category-overlay {
  background:
    linear-gradient(180deg,rgba(2,5,18,.06) 30%,rgba(2,5,18,.42) 63%,rgba(2,5,18,.97) 100%),
    linear-gradient(90deg,rgba(4,7,21,.16),transparent 42%,rgba(4,7,21,.12));
}
.gallery-category-copy { position: relative; z-index: 3; }

/* Toutes les vignettes publiées sont recadrées uniquement dans les grilles.
   Leur ratio n’est jamais étiré et la fiche donne accès à l’image complète. */
.photo-grid { align-items: stretch; }
.photo-card {
  min-width: 0;
  min-height: 0;
  aspect-ratio: 1 / 1;
  isolation: isolate;
  background: #030613;
}
.photo-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.photo-card > span { z-index: 2; }

/* Fiche photo : cadre adapté à l’orientation, aucun étirement et arrière-plan ambiant. */
.photo-stage {
  position: relative;
  isolation: isolate;
  width: 100%;
  min-height: 250px;
  max-height: 72dvh;
  overflow: hidden;
  background: #02040d;
}
.photo-stage.is-landscape { aspect-ratio: 16 / 10; }
.photo-stage.is-square { aspect-ratio: 1 / 1; }
.photo-stage.is-portrait { aspect-ratio: 4 / 5; }
.photo-stage-backdrop {
  position: absolute;
  z-index: 0;
  inset: -34px;
  width: calc(100% + 68px);
  height: calc(100% + 68px);
  object-fit: cover;
  object-position: center;
  opacity: .7;
  filter: blur(30px) brightness(.48) saturate(1.15);
  transform: scale(1.08);
}
.photo-stage::after {
  content: "";
  position: absolute;
  z-index: 1;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg,rgba(2,4,13,.12),rgba(2,4,13,.28));
}
.photo-stage-trigger {
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  min-height: inherit;
  padding: 0;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  color: #fff;
  background: rgba(2,4,13,.28);
  cursor: zoom-in;
}
.main-photo,
.photo-stage .main-photo {
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  background: transparent;
}
.photo-stage-hint {
  position: absolute;
  z-index: 3;
  inset: auto 12px 12px auto;
  min-height: 34px;
  padding: 7px 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  color: #fff;
  background: rgba(4,8,24,.84);
  box-shadow: 0 8px 22px rgba(0,0,0,.28);
  backdrop-filter: blur(12px);
  font-size: .66rem;
  font-weight: 850;
  line-height: 1;
}
.photo-stage-hint .icon { width: 15px; height: 15px; }
.photo-stage-trigger:focus-visible,
.embedded-media-trigger:focus-visible,
.is-interactive-media:focus-visible {
  outline: 3px solid rgba(86,216,255,.72);
  outline-offset: -3px;
}

/* Illustrations publiées dans le forum et aperçus de modération. */
.embedded-media-trigger {
  position: relative;
  width: 100%;
  padding: 0;
  display: block;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 15px;
  color: #fff;
  background: #02040d;
  cursor: zoom-in;
}
.topic-cover-trigger { margin-block-start: 15px; }
.embedded-media-trigger .topic-cover {
  width: 100%;
  height: auto;
  max-height: 520px;
  margin: 0;
  display: block;
  object-fit: contain;
  border: 0;
  border-radius: 0;
}
.embedded-media-hint {
  position: absolute;
  inset: 10px 10px auto auto;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 11px;
  background: rgba(4,8,24,.82);
  box-shadow: 0 7px 18px rgba(0,0,0,.25);
}
.embedded-media-hint .icon { width: 17px; height: 17px; }
.review-image {
  height: min(340px, 62dvh);
  max-height: none;
  object-fit: contain;
  object-position: center;
  background: #02040d;
}
.is-interactive-media { cursor: zoom-in; }

/* Prévisualisation avant envoi : format réel visible et contrôlable. */
.local-preview-frame {
  position: relative;
  width: 100%;
  margin-block-start: 12px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #02040d;
  box-shadow: 0 10px 24px rgba(0,0,0,.18);
}
.local-preview-frame .local-preview {
  width: 100%;
  height: min(320px, 58dvh);
  margin: 0;
  display: block;
  object-fit: contain;
  border: 0;
  border-radius: 0;
}
.local-preview-meta {
  min-height: 34px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  color: var(--text-soft);
  background: rgba(10,16,38,.98);
  font-size: .62rem;
  font-weight: 700;
  line-height: 1.35;
  text-align: start;
}

/* Visionneuse indépendante : aucun impact sur le flux ni sur la navigation. */
body.media-viewer-open {
  overflow: hidden;
  overscroll-behavior: none;
}
.media-viewer {
  position: fixed;
  z-index: 520;
  inset: 0;
  padding:
    max(8px, env(safe-area-inset-top))
    max(8px, env(safe-area-inset-right))
    max(8px, env(safe-area-inset-bottom))
    max(8px, env(safe-area-inset-left));
  display: grid;
  place-items: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity .22s ease, visibility .22s ease;
}
.media-viewer.open { opacity: 1; visibility: visible; }
.media-viewer-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: rgba(1,3,11,.975);
  backdrop-filter: blur(18px);
}
.media-viewer-panel {
  position: relative;
  z-index: 1;
  width: min(100%, 980px);
  height: 100%;
  min-height: 0;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto minmax(0,1fr) auto;
  border: 1px solid rgba(157,170,235,.25);
  border-radius: 18px;
  background: #02040d;
  box-shadow: 0 26px 70px rgba(0,0,0,.66);
  transform: scale(.985);
  transition: transform .22s ease;
}
.media-viewer.open .media-viewer-panel { transform: scale(1); }
.media-viewer-header {
  min-width: 0;
  min-height: 60px;
  padding: 9px 10px 9px 13px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid rgba(157,170,235,.17);
  background: rgba(8,13,31,.98);
}
.media-viewer-header > div:first-child { min-width: 0; }
.media-viewer-header .section-kicker { margin: 0 0 2px; font-size: .55rem; }
.media-viewer-header h2 {
  max-width: min(54vw, 600px);
  margin: 0;
  overflow: hidden;
  color: #fff;
  font-size: .82rem;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.media-viewer-actions { display: flex; align-items: center; gap: 6px; }
.media-viewer-action,
.media-viewer-close {
  min-height: 38px;
  padding: 0 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 1px solid rgba(157,170,235,.2);
  border-radius: 12px;
  color: #e9ecff;
  background: rgba(255,255,255,.055);
  font-size: .64rem;
  font-weight: 850;
  cursor: pointer;
}
.media-viewer-close { width: 38px; padding: 0; }
.media-viewer-action .icon,
.media-viewer-close .icon { width: 17px; height: 17px; }
.media-viewer-action[aria-pressed="true"] {
  border-color: rgba(86,216,255,.45);
  color: #fff;
  background: rgba(86,216,255,.12);
}
.media-viewer-canvas {
  min-width: 0;
  min-height: 0;
  padding: 8px;
  overflow: auto;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 50% 42%,rgba(37,53,104,.2),transparent 52%),
    #01030a;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  touch-action: pan-x pan-y pinch-zoom;
}
.media-viewer-canvas img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}
.media-viewer.is-zoomed .media-viewer-canvas {
  display: block;
  padding: 14px;
}
.media-viewer.is-zoomed .media-viewer-canvas img {
  max-width: none;
  max-height: none;
  margin: auto;
  cursor: zoom-out;
}
.media-viewer-footer {
  min-height: 44px;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid rgba(157,170,235,.15);
  color: var(--text-soft);
  background: rgba(8,13,31,.98);
  font-size: .62rem;
  line-height: 1.35;
}
.media-viewer-footer small { color: var(--muted-2); text-align: end; }

@media (max-width: 390px) {
  .gallery-category-card { min-height: 146px; aspect-ratio: 1 / 1; }
  .gallery-category-image { inset: 6px 6px 51px; width: calc(100% - 12px) !important; height: calc(100% - 57px) !important; }
  .photo-stage-hint span { display: none; }
  .photo-stage-hint { width: 36px; height: 36px; padding: 0; justify-content: center; }
  .media-viewer-action span { display: none; }
  .media-viewer-action { width: 38px; padding: 0; }
  .media-viewer-header h2 { max-width: 48vw; }
  .media-viewer-footer { display: grid; gap: 1px; }
  .media-viewer-footer small { text-align: start; }
}

@media (prefers-reduced-motion: reduce) {
  .media-viewer,
  .media-viewer-panel,
  .gallery-category-backdrop,
  .gallery-category-image { transition: none !important; }
}

/* V29 — Aperçus plein cadre et variantes médias réellement optimisées. */

/* Catégories : une seule image couvre toute la carte. L’icône reste derrière
   et apparaît automatiquement si le média est absent ou illisible. */
.gallery-category-rail {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.gallery-category-card {
  width: 100%;
  min-width: 0;
  min-height: 0;
  height: auto;
  aspect-ratio: 1 / 1;
}
.gallery-category-media {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #081027;
}
.gallery-category-fallback {
  position: absolute;
  z-index: 0;
  inset: 0;
}
.gallery-category-image {
  position: absolute;
  z-index: 1;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block;
  object-fit: cover !important;
  object-position: center;
  filter: none;
  transform: scale(1.001);
}
.gallery-category-image[hidden] { display: none !important; }
.gallery-category-backdrop { display: none !important; }
.gallery-category-card:hover .gallery-category-image { transform: scale(1.045); }
.gallery-category-overlay {
  background:
    linear-gradient(180deg, rgba(2,5,18,.02) 34%, rgba(2,5,18,.28) 58%, rgba(2,5,18,.96) 100%),
    linear-gradient(90deg, rgba(3,6,18,.12), transparent 48%, rgba(3,6,18,.08));
}
.gallery-category-copy {
  min-height: 68px;
  padding: 15px 13px 12px;
}

/* Toutes les vignettes de photographies remplissent leur cadre. Les variantes
   thumb/list sont déjà recadrées côté serveur, object-fit reste une sécurité. */
.photo-card,
.photo-grid .photo-card {
  aspect-ratio: 1 / 1;
  background: #030613;
}
.photo-card img,
.photo-grid .photo-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* Fiche photo : aperçu immersif plein cadre ; la visionneuse conserve toujours
   l’image complète et non recadrée au toucher. */
.photo-stage-backdrop { display: none !important; }
.photo-stage {
  min-height: 240px;
  background: #02040d;
}
.photo-stage-trigger {
  background: #02040d;
}
.main-photo,
.photo-stage .main-photo {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: center;
  transform: translateZ(0);
}
.photo-stage-trigger:hover .main-photo { transform: scale(1.012); }

/* Illustrations de forum et contrôles de modération : aperçu homogène, clic pour
   afficher le fichier complet dans la visionneuse globale. */
.embedded-media-trigger {
  aspect-ratio: 16 / 10;
  min-height: 180px;
}
.embedded-media-trigger .topic-cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  object-fit: cover;
  object-position: center;
}
.review-image {
  width: 100%;
  height: auto;
  max-height: none;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  background: #02040d;
}
.category-admin-cover {
  width: 100%;
  height: auto;
  max-height: none;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  object-position: center;
}

/* L’aperçu avant publication reproduit le recadrage des cartes. Le clic ouvre
   toujours le fichier local complet, ce qui évite toute surprise à l’utilisateur. */
.local-preview-frame .local-preview {
  width: 100%;
  height: auto;
  max-height: none;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
}

/* La visionneuse est volontairement la seule zone utilisant contain : elle sert
   à inspecter les formats 9:16, 16:9 ou panoramiques sans aucune perte. */
.media-viewer-canvas img {
  object-fit: contain !important;
}

@media (max-width: 390px) {
  .gallery-category-rail { gap: 10px; }
  .gallery-category-card { min-height: 0; aspect-ratio: 1 / 1; }
  .gallery-category-image {
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
  }
  .gallery-category-copy { padding: 13px 11px 11px; }
  .embedded-media-trigger { min-height: 160px; }
}

@media (prefers-reduced-motion: reduce) {
  .gallery-category-image,
  .main-photo { transition: none !important; transform: none !important; }
}

/* V30 — Livraison média fiable, haute définition et états de repli propres. */
.gallery-listing-section .photo-grid {
  width: 100%;
  min-width: 0;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.photo-card,
.photo-grid .photo-card {
  width: 100%;
  min-width: 0;
  min-height: clamp(150px, 44vw, 260px);
  display: block;
  aspect-ratio: 1 / 1;
  isolation: isolate;
}

.photo-card > .photo-card-media {
  position: absolute;
  z-index: 0;
  inset: 0;
  padding: 0;
  overflow: hidden;
  display: block;
  background: #030613;
}

.photo-card > .photo-card-copy {
  position: absolute;
  z-index: 3;
  inset: auto 0 0;
  padding: 42px 10px 10px;
  display: block;
  background: linear-gradient(transparent, rgba(2,4,14,.97));
}

.photo-card-media img {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  image-rendering: auto;
}

.photo-card-fallback {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: grid;
  place-items: center;
  color: rgba(188,198,239,.72);
  background:
    radial-gradient(circle at 50% 38%, rgba(71,91,170,.22), transparent 44%),
    #060a1b;
}
.photo-card-fallback .icon { width: 34px; height: 34px; }
.photo-card.is-media-unavailable .photo-card-fallback { color: #aeb8e4; }

.main-photo,
.review-image,
.topic-cover,
.gallery-category-image,
.photo-card-media img {
  image-rendering: auto;
  -webkit-font-smoothing: antialiased;
}

/* La modération doit voir le cadrage entier et non une vignette agrandie. */
.review-image {
  width: 100%;
  height: min(68dvh, 620px);
  min-height: 260px;
  aspect-ratio: auto;
  object-fit: contain;
  object-position: center;
  background:
    radial-gradient(circle at 50% 45%, rgba(42,57,119,.2), transparent 55%),
    #01030b;
}
.admin-content-card.is-media-unavailable .review-image { min-height: 220px; }

.media-viewer-loading,
.media-viewer-error {
  grid-area: 1 / 1;
  max-width: min(88%, 430px);
  padding: 18px;
  display: grid;
  place-items: center;
  gap: 9px;
  color: var(--text-soft);
  text-align: center;
}
.media-viewer-loading[hidden],
.media-viewer-error[hidden] { display: none !important; }
.media-viewer-loading > span {
  width: 34px;
  height: 34px;
  border: 3px solid rgba(174,187,239,.2);
  border-top-color: #7b8cff;
  border-radius: 50%;
  animation: media-viewer-spin .8s linear infinite;
}
.media-viewer-loading strong,
.media-viewer-error strong { color: #eef1ff; font-size: .8rem; }
.media-viewer-error .icon { width: 34px; height: 34px; color: #9ca9e6; }
.media-viewer-error small { color: var(--muted-2); font-size: .66rem; line-height: 1.45; }
.media-viewer-canvas > img { grid-area: 1 / 1; }
.media-viewer-action:disabled {
  opacity: .4;
  cursor: not-allowed;
}

@keyframes media-viewer-spin { to { transform: rotate(360deg); } }

@media (min-width: 560px) and (max-width: 767px) {
  .gallery-listing-section .photo-grid.large {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .photo-card,
  .photo-grid .photo-card { min-height: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .media-viewer-loading > span { animation: none; }
}

/* Éphémérides d'accueil : calculées dans le navigateur, sans dépendance réseau. */
.sky-now {
  padding: 15px;
  border: 1px solid rgba(124,138,255,.2);
  border-radius: 20px;
  background: linear-gradient(145deg,rgba(15,23,52,.94),rgba(8,13,31,.98));
  box-shadow: 0 14px 34px rgba(0,0,0,.16);
}
.sky-now-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.sky-now-head h2 { margin: 2px 0 0; font-size: 1.18rem; }
.sky-locate {
  min-height: 38px;
  padding: 7px 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid rgba(127,211,255,.2);
  border-radius: 999px;
  color: #c9efff;
  background: rgba(86,216,255,.07);
  font: inherit;
  font-size: .68rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.sky-locate-icon {
  width: 17px;
  height: 17px;
  flex: 0 0 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.sky-locate[aria-busy="true"] { opacity: .62; pointer-events: none; }
.sky-locate[aria-busy="true"] .sky-locate-icon { animation: sky-locate-pulse 1s ease-in-out infinite; }
@keyframes sky-locate-pulse { 50% { opacity: .35; transform: scale(.88); } }
.sky-place { margin: 11px 0; display: grid; gap: 2px; }
.sky-place strong { color: var(--text-soft); font-size: .72rem; }
.sky-place small { color: var(--muted); font-size: .6rem; }
.sky-events { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
.sky-event {
  min-width: 0;
  padding: 10px;
  display: grid;
  grid-template-columns: 30px minmax(0,1fr);
  align-items: center;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.025);
}
.sky-event-icon { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 10px; font-size: 1rem; }
.sky-event-sun .sky-event-icon { color: #ffd990; background: rgba(255,187,77,.1); }
.sky-event-moon .sky-event-icon { color: #c9d2ff; background: rgba(136,120,255,.12); }
.sky-event div { min-width: 0; display: grid; gap: 1px; }
.sky-event small { overflow: hidden; color: var(--muted); font-size: .58rem; white-space: nowrap; text-overflow: ellipsis; }
.sky-event strong { font-size: .96rem; line-height: 1.1; }
.sky-event b { color: #9ee8ff; font-size: .61rem; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.moon-phase {
  margin-block-start: 8px;
  padding: 11px 12px;
  display: grid;
  grid-template-columns: 52px minmax(0,1fr);
  align-items: center;
  gap: 12px;
  overflow: hidden;
  border: 1px solid rgba(140,151,255,.08);
  border-radius: 16px;
  background:
    radial-gradient(circle at 8% 50%,rgba(139,123,255,.13),transparent 30%),
    linear-gradient(100deg,rgba(136,120,255,.1),rgba(86,216,255,.045));
}
.moon-phase-icon-shell {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.moon-phase-icon {
  display: block;
  font-size: 2.2rem;
  line-height: 1;
  text-align: center;
  filter: saturate(.78) brightness(1.08) drop-shadow(0 3px 8px rgba(0,0,0,.22));
  transform: translateY(-1px);
}
.moon-phase-copy {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 3px 10px;
}
.moon-phase-copy small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: .57rem;
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: .11em;
}
.moon-phase-copy strong {
  min-width: 0;
  overflow: hidden;
  color: var(--text);
  font-size: .8rem;
  line-height: 1.2;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.moon-phase-illumination {
  justify-self: end;
  padding: 3px 7px;
  color: #c6cbdf;
  border: 1px solid rgba(190,200,255,.09);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  font-size: .58rem;
  line-height: 1.15;
  white-space: nowrap;
}
@media (min-width: 720px) {
  .sky-now { padding: 18px; }
  .sky-events { grid-template-columns: repeat(4,minmax(0,1fr)); }
}
@media (max-width: 360px) {
  .sky-locate { width: 38px; padding-inline: 0; }
  .sky-locate span { display: none; }
  .sky-events { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) { .sky-locate[aria-busy="true"] .sky-locate-icon { animation: none; } }

/* Accueil mobile : rapproche le bloc Ciel local sans alourdir la mise en page. */
@media (max-width: 719px) {
  .screen-home .hero {
    margin-block-end: 0;
  }
  .screen-home .hero-overlay {
    padding-block-end: 14px;
  }
  .screen-home .hero-scroll {
    margin-block-start: 14px;
  }
  .screen-home .hero + .sky-now {
    margin-block-start: 10px;
  }
  .screen-home .announcement + .sky-now {
    margin-block-start: 12px;
  }
}

/* Conditions d'observation — composant léger, sans bibliothèque externe. */
.observation-home-card{--score-angle:0deg;position:relative;display:block;overflow:hidden;margin:14px 0 20px;padding:18px;color:var(--text);text-decoration:none;border:1px solid rgba(139,124,255,.22);border-radius:24px;background:radial-gradient(circle at 84% 8%,rgba(72,185,255,.18),transparent 30%),linear-gradient(145deg,rgba(34,32,87,.96),rgba(8,16,39,.98));box-shadow:0 18px 45px rgba(0,0,0,.22)}
.observation-home-sky{position:absolute;inset:0;pointer-events:none;opacity:.72;background-image:radial-gradient(circle at 18% 28%,#fff 0 1px,transparent 1.6px),radial-gradient(circle at 66% 19%,#fff 0 1px,transparent 1.5px),radial-gradient(circle at 88% 54%,#93dfff 0 1px,transparent 1.6px);background-size:150px 110px,190px 130px,220px 160px}.observation-home-sky span{position:absolute;width:150px;height:150px;right:-50px;top:-70px;border:1px solid rgba(122,194,255,.18);border-radius:50%}.observation-home-head,.observation-home-body,.observation-home-factors{position:relative;z-index:1}.observation-home-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.observation-home-head h2{margin:2px 0 0;font-size:1.32rem}.observation-home-arrow{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.07)}.observation-home-arrow svg{width:18px}.observation-home-body{display:grid;grid-template-columns:82px minmax(0,1fr);align-items:center;gap:15px;margin-top:18px}.observation-home-score{width:82px;height:82px;display:grid;place-content:center;text-align:center;border-radius:50%;background:radial-gradient(circle,#101630 55%,transparent 57%),conic-gradient(#78ddff var(--score-angle),rgba(255,255,255,.09) 0);box-shadow:0 0 30px rgba(91,196,255,.12)}.observation-home-score strong{font-size:1.65rem;line-height:1}.observation-home-score small{color:var(--muted);font-size:.62rem}.observation-home-body>div:last-child>strong{display:block;font-size:1rem}.observation-home-body p{margin:5px 0;color:#bec5df;font-size:.78rem;line-height:1.4}.observation-home-body small{color:#8e98bd;font-size:.68rem}.observation-home-factors{display:flex;gap:7px;margin-top:16px;overflow:auto;scrollbar-width:none}.observation-home-factors span{flex:0 0 auto;padding:6px 9px;border:1px solid rgba(255,255,255,.07);border-radius:999px;background:rgba(255,255,255,.04);color:#cbd2e9;font-size:.66rem;font-weight:700}
.screen-observation .page-content{padding-top:0}.observation-page{margin-inline:-2px}.observation-hero{position:relative;overflow:hidden;min-height:250px;padding:24px 20px 28px;border-radius:0 0 30px 30px;background:radial-gradient(circle at 75% 25%,rgba(80,203,255,.18),transparent 26%),radial-gradient(circle at 40% 0,rgba(123,92,255,.28),transparent 40%),linear-gradient(160deg,#151949,#071326 72%)}.observation-hero h1{max-width:300px;margin:8px 0 10px;font-size:2.15rem;line-height:1.02}.observation-hero p:last-child{max-width:320px;color:#c0c7df;font-size:.86rem;line-height:1.55}.observation-back{display:grid;place-items:center;width:38px;height:38px;margin-bottom:24px;color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:rgba(255,255,255,.06);font-size:1.8rem}.observation-orbit{position:absolute;width:160px;height:160px;right:-58px;bottom:-55px;border:1px solid rgba(122,219,255,.2);border-radius:50%;transform:rotate(-18deg)}.observation-orbit:after{content:"";position:absolute;inset:28px;border:1px solid rgba(145,114,255,.18);border-radius:50%}.observation-orbit span{position:absolute;width:7px;height:7px;left:18px;top:35px;border-radius:50%;background:#fff;box-shadow:0 0 14px #7be1ff}.observation-location{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;padding:14px;border:1px solid rgba(255,255,255,.07);border-radius:18px;background:rgba(18,24,53,.82)}.observation-location div{min-width:0}.observation-location small,.observation-location span{display:block;color:var(--muted);font-size:.62rem}.observation-location strong{display:block;overflow:hidden;margin:4px 0;color:#f4f6ff;font-size:.82rem;white-space:nowrap;text-overflow:ellipsis}.button.compact{flex:0 0 auto;min-height:36px;padding:7px 10px;font-size:.63rem}.observation-loading,.observation-error{margin:18px 0;padding:28px 20px;text-align:center;border:1px solid rgba(255,255,255,.07);border-radius:22px;background:rgba(15,21,47,.75)}.observation-loading>span{display:block;width:34px;height:34px;margin:0 auto 12px;border:3px solid rgba(255,255,255,.1);border-top-color:#7bdfff;border-radius:50%;animation:observation-spin .8s linear infinite}.observation-loading strong,.observation-loading small{display:block}.observation-loading small{margin-top:6px;color:var(--muted);font-size:.7rem}@keyframes observation-spin{to{transform:rotate(360deg)}}
.observation-score-card{--score-angle:0deg;display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:18px;margin:18px 0;padding:18px;border:1px solid rgba(121,199,255,.17);border-radius:24px;background:linear-gradient(135deg,rgba(30,38,86,.95),rgba(10,20,42,.96))}.observation-score-ring{width:108px;height:108px;display:grid;place-content:center;text-align:center;border-radius:50%;background:radial-gradient(circle,#101735 56%,transparent 58%),conic-gradient(#76e0ff var(--score-angle),rgba(255,255,255,.08) 0);box-shadow:0 0 35px rgba(76,202,255,.12)}.observation-score-ring strong{font-size:2.1rem;line-height:1}.observation-score-ring small{color:var(--muted);font-size:.68rem}.observation-score-copy p{margin:0;color:#959fc4;font-size:.58rem;font-weight:800;letter-spacing:.11em}.observation-score-copy h2{margin:6px 0;font-size:1.25rem}.observation-score-copy span{display:block;color:#bec6de;font-size:.74rem;line-height:1.45}.observation-best{display:flex;align-items:center;justify-content:space-between;margin:14px 0 24px}.observation-best h2{margin:4px 0;font-size:1.15rem}.observation-best span{color:var(--muted);font-size:.7rem}.observation-best>strong{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:linear-gradient(145deg,#705cff,#4ebfea);font-size:1.2rem}.observation-timeline{display:flex;gap:9px;overflow-x:auto;padding:2px 1px 10px;scroll-snap-type:x mandatory;scrollbar-width:none}.observation-hour{position:relative;flex:0 0 82px;overflow:hidden;padding:12px 10px 16px;text-align:center;border:1px solid rgba(255,255,255,.07);border-radius:18px;background:rgba(17,23,50,.84);scroll-snap-align:start}.observation-hour small,.observation-hour span{display:block;color:var(--muted);font-size:.58rem}.observation-hour strong{display:block;margin:8px 0 5px;font-size:1.35rem}.observation-hour i{position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#785dff var(--hour-score),rgba(255,255,255,.06) 0)}.observation-metrics{display:grid;gap:9px}.observation-metric{display:flex;gap:12px;padding:14px;border:1px solid rgba(255,255,255,.065);border-radius:18px;background:rgba(15,21,46,.78)}.metric-dot{flex:0 0 auto;width:9px;height:9px;margin-top:5px;border-radius:50%}.metric-good{background:#6be2b1;box-shadow:0 0 12px rgba(107,226,177,.5)}.metric-medium{background:#ffd16b;box-shadow:0 0 12px rgba(255,209,107,.4)}.metric-bad{background:#ff7b91;box-shadow:0 0 12px rgba(255,123,145,.4)}.observation-metric small{display:block;color:#8f99bd;font-size:.62rem;text-transform:uppercase;letter-spacing:.07em}.observation-metric strong{display:block;margin:3px 0;font-size:.9rem}.observation-metric p{margin:0;color:#b6bfd9;font-size:.68rem;line-height:1.4}.observation-explain{margin-top:22px}.observation-explain h2{font-size:1.05rem}.observation-explain p{color:#bec6df;font-size:.75rem;line-height:1.55}.observation-explain small{display:block;color:#828daf;font-size:.61rem;line-height:1.45}
@media(prefers-reduced-motion:reduce){.observation-loading>span{animation:none}}


/* Observation UI refinement — mobile-first structure and compact metrics. */
.observation-home-factors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;overflow:visible}
.observation-home-factors>span{display:flex;align-items:center;justify-content:center;min-width:0;padding:9px 8px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(255,255,255,.045)}
.observation-home-factors>span>i{flex:0 0 auto;margin-right:7px;color:#dce7ff;font-size:.9rem;font-style:normal;line-height:1}
.observation-home-factors>span>span{display:block;min-width:0}
.observation-home-factors small,.observation-home-factors strong{display:block;white-space:nowrap}
.observation-home-factors small{margin-bottom:2px;color:#8f99bb;font-size:.5rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.observation-home-factors strong{color:#eef2ff;font-size:.68rem;line-height:1.15}

.observation-hero{min-height:0;padding:18px 18px 30px}
.observation-hero-nav{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:34px}
.observation-back{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:auto;height:40px;margin:0;padding:0 13px;color:#fff;border-color:rgba(255,255,255,.14);font-size:1rem}
.observation-back span{display:block;margin-top:-2px;font-size:1.55rem;line-height:1}
.observation-back b{font-size:.7rem;letter-spacing:.02em}
.observation-live{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid rgba(124,220,255,.16);border-radius:999px;background:rgba(8,18,42,.36);color:#b9c6e4;font-size:.58rem;font-weight:750;letter-spacing:.04em;text-transform:uppercase}
.observation-live i{width:6px;height:6px;border-radius:50%;background:#6ce0b1;box-shadow:0 0 12px rgba(108,224,177,.7)}
.observation-hero-copy{position:relative;z-index:1;max-width:430px}
.observation-hero h1{max-width:360px;margin-top:7px;font-size:clamp(1.85rem,8vw,2.45rem)}
.observation-hero p:last-child{max-width:360px;margin-bottom:0}
.observation-orbit{right:-72px;bottom:-82px;width:190px;height:190px}

.observation-location{align-items:flex-start;padding:15px}
.observation-location>div{padding-top:1px}
.observation-location .button.compact{align-self:center;max-width:145px;line-height:1.25}

@media(max-width:390px){
  .observation-home-card{padding:16px}
  .observation-home-body{grid-template-columns:72px minmax(0,1fr);gap:12px}
  .observation-home-score{width:72px;height:72px}
  .observation-home-score strong{font-size:1.45rem}
  .observation-home-factors{gap:6px}
  .observation-home-factors>span{padding:8px 5px}
  .observation-home-factors>span>i{margin-right:5px;font-size:.78rem}
  .observation-home-factors small{font-size:.44rem}
  .observation-home-factors strong{font-size:.59rem}
  .observation-live{font-size:.52rem}
  .observation-location{display:grid;grid-template-columns:1fr}
  .observation-location .button.compact{width:100%;max-width:none}
}

@media(min-width:700px){
  .observation-page{max-width:920px;margin-inline:auto}
  .observation-hero{padding:24px 28px 38px;border-radius:0 0 34px 34px}
  .observation-hero-nav{margin-bottom:48px}
  .observation-score-card{grid-template-columns:130px minmax(0,1fr);padding:24px}
  .observation-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Observation UI final — navigation, localisation partagée et indicateurs compacts. */
.observation-back{
  min-height:46px;
  padding:5px 14px 5px 7px;
  gap:10px;
  border:1px solid rgba(166,184,255,.2);
  border-radius:15px;
  background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(255,255,255,.035));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 8px 22px rgba(0,0,0,.12);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.observation-back:hover{border-color:rgba(133,214,255,.35);background:rgba(255,255,255,.1)}
.observation-back:active{transform:scale(.97)}
.observation-back-icon{
  display:grid!important;
  place-items:center;
  width:32px;
  height:32px;
  margin:0!important;
  border-radius:10px;
  background:rgba(7,14,37,.38);
  color:#f8faff;
  font-size:1.05rem!important;
  line-height:1!important;
}
.observation-back-copy{display:grid;gap:1px;text-align:left;line-height:1}
.observation-back-copy small{color:#9ca7c9;font-size:.48rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.observation-back-copy strong{color:#f7f8ff;font-size:.7rem;font-weight:750;letter-spacing:.01em}

.observation-location-refresh{
  flex:0 0 auto;
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  gap:10px;
  width:220px;
  min-height:50px;
  padding:7px 12px 7px 8px;
  border:1px solid rgba(111,209,255,.24);
  border-radius:15px;
  background:linear-gradient(145deg,rgba(42,112,157,.17),rgba(52,81,148,.12));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
  color:#e9f7ff;
  font:inherit;
  cursor:pointer;
  text-align:left;
  transition:border-color .18s ease,background .18s ease,transform .16s ease,box-shadow .18s ease;
}
.observation-location-refresh:hover{border-color:rgba(117,219,255,.4);background:linear-gradient(145deg,rgba(42,112,157,.25),rgba(52,81,148,.18));box-shadow:0 8px 22px rgba(19,76,126,.16),inset 0 1px 0 rgba(255,255,255,.07)}
.observation-location-refresh:focus-visible{outline:2px solid #79ddff;outline-offset:3px}
.observation-location-refresh:active{transform:translateY(1px)}
.observation-location-refresh-icon{position:relative;display:block;align-self:center;justify-self:center;width:34px;height:34px;overflow:hidden;border:1px solid rgba(117,219,255,.17);border-radius:11px;background:rgba(82,174,220,.1);color:#75dbff;line-height:0}
.observation-location-refresh-icon .icon{position:absolute;top:50%;left:50%;display:block;width:17px;height:17px;margin:0;transform:translate(-50%,-50%);transform-origin:center}
.observation-location-refresh-copy{display:grid;gap:3px;min-width:0;align-content:center}
.observation-location-refresh-copy b{display:block;color:#f0f8ff;font-size:.66rem;font-weight:800;line-height:1.18;white-space:normal}
.observation-location-refresh-copy small{display:block;color:#91a5c6;font-size:.52rem;font-weight:650;line-height:1.2;white-space:nowrap}
.observation-location-refresh[aria-busy=true] .observation-location-refresh-icon .icon{animation:observation-location-icon-spin .8s linear infinite}
@keyframes observation-location-icon-spin{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}
.observation-location-refresh:disabled{cursor:wait;opacity:.72}

/* Retour au rendu en pastilles, plus lisible et plus léger. */
.observation-home-factors{
  display:flex;
  align-items:center;
  gap:8px;
  overflow:visible;
}
.observation-home-factors>span{
  flex:1 1 0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-width:0;
  min-height:43px;
  padding:8px 10px;
  border:1px solid rgba(171,184,255,.13);
  border-radius:999px;
  background:linear-gradient(145deg,rgba(255,255,255,.065),rgba(255,255,255,.025));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.observation-home-factors>span>i{
  flex:0 0 auto;
  margin:0;
  color:#e6edff;
  font-size:.82rem;
  font-style:normal;
  line-height:1;
}
.observation-home-factors>span>strong{
  display:block;
  min-width:0;
  overflow:hidden;
  color:#f2f4ff;
  font-size:.68rem;
  font-weight:760;
  line-height:1;
  white-space:nowrap;
  text-overflow:ellipsis;
}
@media(max-width:390px){
  .observation-home-factors{gap:6px}
  .observation-home-factors>span{min-height:40px;padding:7px 7px;gap:5px}
  .observation-home-factors>span>i{font-size:.72rem}
  .observation-home-factors>span>strong{font-size:.59rem}
}

/* Observation — navigation épurée et saisie d’adresse précise. */
.observation-back{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  width:auto;
  min-height:40px;
  padding:0 14px;
  margin:0;
  border:1px solid rgba(175,190,255,.18);
  border-radius:999px;
  background:rgba(9,17,43,.42);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
  color:#f7f8ff;
  text-decoration:none;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.observation-back>span{display:block!important;margin:0!important;font-size:1.08rem!important;line-height:1!important;transform:translateY(-1px)}
.observation-back>strong{font-size:.7rem;font-weight:760;line-height:1;letter-spacing:.01em}
.observation-back:hover{border-color:rgba(125,216,255,.32);background:rgba(21,38,75,.55)}
.observation-back:focus-visible{outline:2px solid #79ddff;outline-offset:3px}
.observation-back:active{transform:translateY(1px)}

.observation-location{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  gap:13px 12px;
  padding:16px;
}
.observation-location-summary{min-width:0;padding-top:1px}
.observation-address-form{grid-column:1/-1;padding-top:13px;border-top:1px solid rgba(255,255,255,.07)}
.observation-address-form>label{display:block;margin-bottom:7px;color:#dfe5fa;font-size:.68rem;font-weight:760}
.observation-address-control{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  min-height:46px;
  padding:4px 4px 4px 13px;
  border:1px solid rgba(146,166,235,.16);
  border-radius:14px;
  background:rgba(5,12,32,.38);
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.observation-address-control:focus-within{border-color:rgba(103,213,255,.42);background:rgba(7,17,39,.62);box-shadow:0 0 0 3px rgba(75,190,244,.08)}
.observation-address-control>span{color:#78dfff;font-size:1rem;line-height:1}
.observation-address-control input{
  width:100%;min-width:0;height:38px;padding:0 10px;border:0;outline:0;background:transparent;color:#f4f7ff;font:inherit;font-size:.72rem
}
.observation-address-control input::placeholder{color:#7f8aab}
.observation-address-control button{
  min-height:36px;padding:0 13px;border:1px solid rgba(103,211,255,.2);border-radius:11px;background:linear-gradient(145deg,rgba(88,115,255,.28),rgba(52,168,218,.17));color:#f4f8ff;font:inherit;font-size:.64rem;font-weight:780;cursor:pointer
}
.observation-address-control button:disabled{cursor:wait;opacity:.65}
.observation-address-form>small{display:block;margin-top:7px;color:#828dae;font-size:.58rem;line-height:1.45}
.observation-address-status{min-height:1.1em;margin:6px 0 0;color:#aeb9d5;font-size:.6rem;line-height:1.4}
.observation-address-status[data-state=success]{color:#78e4b4}
.observation-address-status[data-state=error]{color:#ff9aae}

@media(max-width:430px){
  .observation-hero-nav{align-items:center;margin-bottom:32px}
  .observation-back{min-height:38px;padding-inline:12px}
  .observation-location{grid-template-columns:minmax(0,1fr) auto;padding:14px}
  .observation-address-control{grid-template-columns:auto minmax(0,1fr)}
  .observation-address-control button{grid-column:1/-1;width:100%;margin-top:3px}
}
@media(max-width:520px){
  .observation-location{grid-template-columns:minmax(0,1fr)}
  .observation-location-refresh{grid-column:1/-1;width:100%;min-height:52px}
  .observation-location-refresh-copy b{font-size:.68rem}
}

/* Finitions position météo : action claire, compacte et tactile */
.observation-address-control button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-width:178px;
  min-height:38px;
  padding:0 16px;
  border-color:rgba(112,220,255,.3);
  border-radius:12px;
  background:linear-gradient(135deg,rgba(92,105,255,.92),rgba(45,168,220,.82));
  box-shadow:0 8px 22px rgba(39,111,211,.2),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .16s ease,filter .16s ease,box-shadow .16s ease;
}
.observation-address-control button>span{font-size:.82rem;line-height:1}
.observation-address-control button>b{font-size:.63rem;font-weight:800;white-space:nowrap}
.observation-address-control button:hover{filter:brightness(1.08);box-shadow:0 10px 26px rgba(39,111,211,.28),inset 0 1px 0 rgba(255,255,255,.24)}
.observation-address-control button:active{transform:translateY(1px) scale(.99)}
@media(max-width:430px){
  .observation-address-control button{grid-column:1/-1;width:100%;min-width:0;min-height:42px;margin-top:5px}
}

/* Ajustement final : champ d’adresse et action clairement séparés. */
.observation-address-control{
  grid-template-columns:auto minmax(0,1fr);
  padding:4px 13px;
}
.observation-address-submit{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:auto;
  min-width:210px;
  min-height:44px;
  margin-top:12px;
  padding:0 20px;
  border:1px solid rgba(112,220,255,.32);
  border-radius:14px;
  background:linear-gradient(135deg,rgba(92,105,255,.94),rgba(45,168,220,.86));
  box-shadow:0 10px 24px rgba(39,111,211,.22),inset 0 1px 0 rgba(255,255,255,.22);
  color:#f8fbff;
  font:inherit;
  cursor:pointer;
  transition:transform .16s ease,filter .16s ease,box-shadow .16s ease;
}
.observation-address-submit-icon{display:grid;place-items:center;width:20px;height:20px;line-height:0}
.observation-address-submit-icon .icon{display:block;width:15px;height:15px}
.observation-address-submit>b{display:block;font-size:.64rem;font-weight:800;line-height:1.2;white-space:nowrap}
.observation-address-submit:hover{filter:brightness(1.08);box-shadow:0 12px 28px rgba(39,111,211,.3),inset 0 1px 0 rgba(255,255,255,.25)}
.observation-address-submit:active{transform:translateY(1px) scale(.99)}
.observation-address-submit:focus-visible{outline:2px solid #79ddff;outline-offset:3px}
.observation-address-submit:disabled{cursor:wait;opacity:.65}
@media(max-width:430px){
  .observation-address-submit{width:100%;min-width:0;min-height:46px;margin-top:12px}
}


/* Cohérence du résumé météo et pictogrammes vectoriels. */
.observation-home-factors>span{min-height:58px;gap:10px;padding:10px 12px;border-color:rgba(143,170,255,.16);background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.025));box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.observation-home-factors>span>i.observation-factor-icon{display:grid;place-items:center;width:28px;height:28px;margin:0;border:1px solid rgba(126,211,255,.14);border-radius:10px;background:rgba(82,124,214,.12);color:#cfeaff}
.observation-factor-icon svg{width:17px;height:17px;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.observation-home-factors>span>strong{font-size:.76rem;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
@media(max-width:380px){.observation-home-factors>span{gap:6px;padding-inline:8px}.observation-home-factors>span>i.observation-factor-icon{width:25px;height:25px}.observation-factor-icon svg{width:15px;height:15px}.observation-home-factors>span>strong{font-size:.68rem}}

/* Conditions d'observation — indicateurs épurés sans encadrements */
.observation-home-factors{
  margin-top:16px;
  gap:0;
  align-items:center;
}
.observation-home-factors>span{
  position:relative;
  min-height:auto;
  padding:8px 10px;
  gap:8px;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
.observation-home-factors>span+span::before{
  content:"";
  position:absolute;
  left:0;
  top:24%;
  width:1px;
  height:52%;
  background:rgba(191,207,255,.14);
}
.observation-home-factors>span>i.observation-factor-icon{
  width:24px;
  height:24px;
  margin:0;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#d7e9ff;
}
.observation-home-factors>span>strong{
  font-size:.78rem;
  font-weight:750;
}
@media(max-width:380px){
  .observation-home-factors>span{padding-inline:6px;gap:5px}
  .observation-home-factors>span>i.observation-factor-icon{width:21px;height:21px}
  .observation-home-factors>span>strong{font-size:.69rem}
}

/* Satellite live tracker */
.satellite-live{position:relative;margin:20px 0;padding:18px;border:1px solid rgba(112,153,255,.18);border-radius:26px;background:radial-gradient(circle at 82% 7%,rgba(61,190,233,.13),transparent 28%),linear-gradient(155deg,rgba(16,22,57,.98),rgba(5,13,31,.99));box-shadow:0 22px 52px rgba(0,0,0,.24);overflow:hidden}
.satellite-live::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle at 8% 18%,rgba(255,255,255,.75) 0 1px,transparent 1.5px),radial-gradient(circle at 71% 13%,rgba(132,222,255,.7) 0 1px,transparent 1.5px),radial-gradient(circle at 92% 40%,rgba(255,255,255,.5) 0 1px,transparent 1.5px);background-size:170px 120px,210px 150px,250px 170px;opacity:.35}
.satellite-live>*{position:relative;z-index:1}
.satellite-live-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:15px}
.satellite-live-head h2{margin:2px 0 0;font-size:1.28rem}
.satellite-live-intro{max-width:290px;margin:7px 0 0;color:#aab4d1;font-size:.72rem;line-height:1.45}
.satellite-live-status{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:8px 10px;border:1px solid rgba(92,226,190,.16);border-radius:999px;background:rgba(41,130,112,.09);color:#bff6e4;font-size:.58rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}
.satellite-live-status i{width:7px;height:7px;border-radius:50%;background:#65e6b7;box-shadow:0 0 12px rgba(101,230,183,.8);animation:satellitePulse 1.9s ease-in-out infinite}
.satellite-live-status.is-error{border-color:rgba(255,137,161,.18);background:rgba(138,45,73,.12);color:#ffc2d0}.satellite-live-status.is-error i{background:#ff829d;box-shadow:none;animation:none}
@keyframes satellitePulse{50%{opacity:.38;transform:scale(.72)}}
.satellite-map-shell{position:relative;margin-inline:-8px;border:1px solid rgba(126,166,242,.18);border-radius:22px;background:#08142c;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.satellite-map-toolbar{position:absolute;z-index:3;top:10px;left:12px;right:12px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;color:#b5c0dd;font-size:.56rem;font-weight:700;letter-spacing:.04em}
.satellite-map-toolbar span{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:999px;background:rgba(4,11,29,.7);backdrop-filter:blur(10px)}
.satellite-map-toolbar span i{width:6px;height:6px;border-radius:50%;background:#77e7ff;box-shadow:0 0 10px rgba(119,231,255,.85)}
.satellite-map-toolbar b{padding:6px 8px;border-radius:999px;background:rgba(4,11,29,.7);font-variant-numeric:tabular-nums}
.satellite-map-scroll{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-inline:contain;touch-action:pan-x;cursor:grab}.satellite-map-scroll:active{cursor:grabbing}.satellite-map-scroll::-webkit-scrollbar{display:none}
.satellite-map{display:block;width:960px;height:430px;max-width:none}
.satellite-map-hint{position:absolute;z-index:3;left:50%;bottom:10px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:rgba(4,10,26,.72);backdrop-filter:blur(10px);color:#aeb9d5;font-size:.57rem;font-weight:700;pointer-events:none}
.satellite-focus{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:13px;padding:11px 12px;border-radius:17px;background:rgba(255,255,255,.035);box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.satellite-focus-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:rgba(86,121,202,.11)}.satellite-focus-mark span{width:8px;height:8px;border-radius:50%;background:#74e6ff}
.satellite-focus small{display:block;color:#8792b5;font-size:.5rem;font-weight:800;letter-spacing:.13em}.satellite-focus strong{display:block;margin-top:1px;font-size:.82rem}.satellite-focus p{margin:2px 0 0;color:#9ca7c5;font-size:.59rem}
.satellite-focus-altitude{color:#dce6ff;font-size:.71rem;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.satellite-strip{display:flex;gap:8px;margin:12px -2px 0;padding:2px 2px 4px;overflow-x:auto;scrollbar-width:none;overscroll-behavior-inline:contain}.satellite-strip::-webkit-scrollbar{display:none}
.satellite-chip{display:grid;grid-template-columns:8px auto;grid-template-rows:auto auto;column-gap:7px;flex:0 0 auto;min-width:112px;padding:9px 11px;border:1px solid rgba(135,164,226,.11);border-radius:15px;background:rgba(255,255,255,.026);color:#dce4f8;text-align:left;transition:transform .15s ease,border-color .15s ease,background .15s ease}.satellite-chip:active{transform:scale(.97)}.satellite-chip.active{border-color:rgba(111,211,255,.32);background:linear-gradient(145deg,rgba(90,105,226,.16),rgba(44,166,197,.09));box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.satellite-chip>span{grid-row:1/3;align-self:center;width:7px;height:7px;border-radius:50%;background:var(--sat-color);box-shadow:0 0 11px var(--sat-color)}.satellite-chip b{font-size:.65rem;white-space:nowrap}.satellite-chip small{margin-top:1px;color:#8792b1;font-size:.5rem;white-space:nowrap}
.satellite-source{margin:8px 2px 0;color:#737f9f;font-size:.52rem;line-height:1.4}
@media(max-width:390px){.satellite-live{padding:16px}.satellite-live-head{display:block}.satellite-live-status{margin-top:10px}.satellite-map{width:900px;height:405px}.satellite-focus{grid-template-columns:31px minmax(0,1fr) auto;padding-inline:10px}.satellite-focus-altitude{font-size:.64rem}}
@media(prefers-reduced-motion:reduce){.satellite-live-status i{animation:none}.satellite-chip{transition:none}}
/* Satellite world map v2 */
.satellite-map{width:1100px;height:520px}
.satellite-map-shell{background:linear-gradient(145deg,#07142d,#061c31)}
.satellite-map-scroll{touch-action:pan-x pinch-zoom}
.satellite-focus{grid-template-columns:38px minmax(0,1fr) auto;padding:13px 14px}
.satellite-focus-mission{color:#7886aa!important;font-size:.55rem!important}
.satellite-focus-metrics{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}
.satellite-focus-metrics strong{color:#eaf5ff;font-size:.72rem;font-variant-numeric:tabular-nums}
.satellite-focus-metrics span{color:#8997ba;font-size:.56rem;font-weight:700;font-variant-numeric:tabular-nums}
.satellite-chip{min-width:132px}
.satellite-chip small{max-width:116px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:480px){
  .satellite-live{padding:16px 14px}
  .satellite-live-head{align-items:flex-start}
  .satellite-live-status{padding:7px 9px;font-size:.52rem}
  .satellite-map{width:1040px;height:490px}
  .satellite-focus{grid-template-columns:34px minmax(0,1fr);gap:9px}
  .satellite-focus-metrics{grid-column:2;align-items:flex-start;flex-direction:row;gap:8px}
  .satellite-focus-metrics strong{font-size:.66rem}
  .satellite-focus-metrics span{font-size:.54rem}
}

/* Satellite focus metrics — aligned, location-aware */
.satellite-focus-metrics{display:grid;grid-template-columns:auto auto;align-items:baseline;justify-content:end;column-gap:14px;row-gap:4px;white-space:nowrap;text-align:right}
.satellite-focus-metrics strong,.satellite-focus-metrics span{margin:0;line-height:1.15}
.satellite-focus-metrics strong{font-size:.72rem}
.satellite-focus-metrics span{font-size:.62rem}
.satellite-distance-note{grid-column:1/-1;display:block!important;max-width:280px;margin-top:2px;color:#7886aa!important;font-size:.48rem!important;font-weight:600!important;line-height:1.35;letter-spacing:0!important;text-transform:none!important;white-space:normal}
@media(max-width:540px){.satellite-focus-metrics{grid-column:2;grid-template-columns:auto auto;justify-content:start;text-align:left;column-gap:10px}.satellite-distance-note{max-width:100%;font-size:.46rem!important}}

/* Connexion : arrivée progressive sur l'accueil */
.home-arrival .topbar,.home-arrival .page-content,.home-arrival .bottom-nav{opacity:0}
.home-arrival .topbar{animation:home-arrival-in .7s cubic-bezier(.2,.8,.2,1) .05s forwards}
.home-arrival .page-content{animation:home-arrival-in .9s cubic-bezier(.2,.8,.2,1) .18s forwards}
.home-arrival .bottom-nav{animation:home-arrival-up .72s cubic-bezier(.2,.8,.2,1) .46s forwards}
@keyframes home-arrival-in{from{opacity:0;transform:scale(1.018);filter:blur(7px)}to{opacity:1;transform:none;filter:none}}
@keyframes home-arrival-up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

.observation-address-locked{grid-column:1/-1;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px;margin-top:20px;padding:17px;border:1px solid rgba(120,137,208,.22);border-radius:20px;background:rgba(8,14,39,.42)}
.observation-address-locked>span{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:rgba(84,105,214,.13);color:#7de0ee;font-size:22px}
.observation-address-locked div{min-width:0}.observation-address-locked strong,.observation-address-locked small{display:block}.observation-address-locked strong{font-size:14px;color:#f4f6ff}.observation-address-locked small{margin-top:4px;color:#9ca6cb;line-height:1.4}
.observation-address-locked a{padding:12px 15px;border:1px solid rgba(105,128,225,.34);border-radius:14px;color:#fff;font-weight:800;text-decoration:none;background:rgba(86,91,190,.13);white-space:nowrap}
@media(max-width:480px){.observation-address-locked{grid-template-columns:42px minmax(0,1fr)}.observation-address-locked a{grid-column:1/-1;text-align:center}}
@media(prefers-reduced-motion:reduce){.home-arrival .topbar,.home-arrival .page-content,.home-arrival .bottom-nav{opacity:1;animation:none}}

/* V43 — Observatoire personnel, catalogue céleste et collection d'objets. */
.screen-observation-planner { --page-gutter: 13px; }
.screen-observation-planner .page-content { padding-top: 10px; }
.screen-observation-planner .site-footer { margin-top: 34px; }
.planner-page { min-width: 0; }
.planner-hero {
  position: relative;
  min-height: 244px;
  padding: 20px 18px 24px;
  overflow: hidden;
  border: 1px solid rgba(119,143,255,.22);
  border-radius: 28px;
  background:
    radial-gradient(circle at 84% 13%,rgba(94,92,255,.28),transparent 31%),
    radial-gradient(circle at 10% 94%,rgba(40,198,205,.12),transparent 34%),
    linear-gradient(150deg,#121940 0%,#080d24 68%,#060918 100%);
  box-shadow: 0 24px 62px rgba(0,0,0,.3), inset 0 1px rgba(255,255,255,.04);
}
.planner-hero::before,
.planner-hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
  inset: 0;
  background-image:
    radial-gradient(circle at 12% 18%,rgba(255,255,255,.92) 0 1px,transparent 1.6px),
    radial-gradient(circle at 73% 25%,rgba(178,205,255,.8) 0 1px,transparent 1.7px),
    radial-gradient(circle at 90% 76%,rgba(255,255,255,.65) 0 1px,transparent 1.5px),
    radial-gradient(circle at 34% 84%,rgba(132,244,225,.72) 0 1px,transparent 1.6px);
  background-size: 137px 109px,191px 147px,229px 173px,257px 193px;
  opacity: .46;
}
.planner-hero::after {
  inset: -50% -20%;
  background: linear-gradient(110deg,transparent 42%,rgba(255,255,255,.24) 49%,transparent 55%);
  opacity: .13;
  transform: translateX(-68%) rotate(-9deg);
  animation: plannerMeteor 8s ease-in-out infinite;
}
@keyframes plannerMeteor { 0%,72%{transform:translateX(-68%) rotate(-9deg);opacity:0} 78%{opacity:.17} 96%,100%{transform:translateX(72%) rotate(-9deg);opacity:0} }
.planner-hero > * { position: relative; z-index: 2; }
.planner-back {
  width: max-content;
  min-height: 34px;
  padding: 6px 10px 6px 8px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 1px solid rgba(180,192,255,.18);
  border-radius: 999px;
  color: #d8e0ff;
  background: rgba(5,9,27,.48);
  backdrop-filter: blur(12px);
  font-size: .68rem;
  font-weight: 800;
}
.planner-back .icon { width: 15px; height: 15px; }
.planner-hero .section-kicker { margin-top: 30px; }
.planner-hero h1 { max-width: 10ch; margin: 5px 0 8px; font-size: clamp(1.8rem,8vw,2.35rem); line-height: .98; }
.planner-hero > p:not(.section-kicker) { max-width: 33rem; margin: 0; color: #b5bfdc; font-size: .78rem; line-height: 1.55; }
.planner-hero-orbit { position: absolute; z-index: 1; top: 28px; right: -42px; width: 184px; height: 184px; border: 1px solid rgba(129,144,255,.2); border-radius: 50%; transform: rotate(-17deg); }
.planner-hero-orbit::before { content:""; position:absolute; inset:22px; border:1px solid rgba(117,225,222,.13); border-radius:50%; }
.planner-hero-orbit i,.planner-hero-orbit b,.planner-hero-orbit span { position:absolute; display:block; border-radius:50%; }
.planner-hero-orbit i { width:8px;height:8px;left:18px;top:62px;background:#72f0c9;box-shadow:0 0 18px rgba(114,240,201,.85);animation:plannerStarPulse 2.1s ease-in-out infinite; }
.planner-hero-orbit b { width:4px;height:4px;right:39px;bottom:30px;background:#fff;box-shadow:0 0 11px #fff; }
.planner-hero-orbit span { width:3px;height:3px;right:15px;top:38px;background:#91a9ff;box-shadow:0 0 9px #91a9ff; }
@keyframes plannerStarPulse { 50% { opacity:.42; transform:scale(.72); } }
.planner-live-pill {
  width: max-content;
  max-width: 100%;
  margin-top: 17px;
  padding: 8px 11px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid rgba(91,230,190,.18);
  border-radius: 999px;
  color: #c6f8e8;
  background: rgba(31,124,103,.11);
  font-size: .57rem;
  font-weight: 800;
  letter-spacing: .045em;
}
.planner-live-pill i { width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#64e8b8;box-shadow:0 0 12px rgba(100,232,184,.85); }
.planner-progress { margin: 17px 5px 20px; display:grid; grid-template-columns:auto 1fr auto 1fr auto; align-items:center; gap:8px; }
.planner-progress > i { height:1px; background:rgba(153,166,224,.17); }
.planner-progress > span { min-width: 48px; display:grid; justify-items:center; gap:4px; color:#707b9d; }
.planner-progress b { width:27px;height:27px;display:grid;place-items:center;border:1px solid rgba(143,154,207,.18);border-radius:10px;background:rgba(255,255,255,.025);font-size:.66rem; }
.planner-progress small { font-size:.52rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em; }
.planner-progress span.is-active { color:#e4e9ff; }
.planner-progress span.is-active b { border-color:rgba(137,120,255,.5);background:linear-gradient(135deg,#7761f5,#4c75e7);box-shadow:0 7px 18px rgba(86,71,192,.28); }
.planner-progress span.is-done { color:#83e4c6; }
.planner-progress span.is-done b { border-color:rgba(96,220,183,.35);background:rgba(43,145,117,.14); }
.planner-feedback { margin: 0 0 14px; padding: 10px 12px; border:1px solid rgba(124,151,224,.18);border-radius:13px;color:#cdd6f2;background:rgba(27,38,74,.65);font-size:.7rem;line-height:1.45; }
.planner-feedback[data-state="success"] { border-color:rgba(93,226,185,.25);color:#c5f7e7;background:rgba(30,119,97,.13); }
.planner-feedback[data-state="error"] { border-color:rgba(255,122,151,.28);color:#ffd0da;background:rgba(135,41,68,.14); }
.planner-step { animation: plannerStepIn .24s ease; }
@keyframes plannerStepIn { from{opacity:0;transform:translateY(7px)} }
.planner-section-head { margin-bottom: 13px; }
.planner-section-head h2 { margin: 2px 0 5px; font-size: 1.25rem; }
.planner-section-head p:not(.section-kicker) { margin:0;color:var(--muted);font-size:.72rem;line-height:1.45; }
.instrument-choice-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px; }
.instrument-choice {
  min-width: 0;
  min-height: 143px;
  padding: 14px 12px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  border: 1px solid rgba(133,148,210,.15);
  border-radius: 19px;
  color: #e8ecff;
  background: linear-gradient(145deg,rgba(20,28,62,.9),rgba(8,13,32,.96));
  box-shadow: inset 0 1px rgba(255,255,255,.025);
  transition: transform .16s ease,border-color .16s ease,background .16s ease;
}
.instrument-choice:active { transform:scale(.98); }
.instrument-choice.is-selected { border-color:rgba(135,119,255,.54);background:radial-gradient(circle at 85% 12%,rgba(88,89,238,.24),transparent 35%),linear-gradient(145deg,rgba(35,37,89,.96),rgba(10,15,38,.98));box-shadow:0 12px 29px rgba(38,34,101,.2),inset 0 1px rgba(255,255,255,.04); }
.instrument-choice-icon { width:42px;height:42px;margin-bottom:10px;display:grid;place-items:center;border-radius:14px;color:#bec9ff;background:rgba(113,104,239,.11); }
.instrument-choice.is-selected .instrument-choice-icon { color:#fff;background:linear-gradient(135deg,rgba(125,103,255,.3),rgba(57,155,214,.18)); }
.instrument-choice-icon svg,.saved-instrument>[data-instrument-icon] svg { width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }
.instrument-choice-icon svg .fill,.saved-instrument svg .fill { fill:currentColor;stroke:none; }
.instrument-choice strong { display:block;font-size:.78rem;line-height:1.2; }
.instrument-choice small { display:block;margin-top:5px;color:#8f9ab9;font-size:.59rem;line-height:1.4; }
.saved-instruments { margin-top: 17px; padding: 13px; border:1px solid rgba(132,149,212,.14);border-radius:19px;background:rgba(255,255,255,.02); }
.saved-instruments-head { margin-bottom:9px;display:flex;justify-content:space-between;gap:10px;align-items:center; }
.saved-instruments-head strong { font-size:.72rem; }
.saved-instruments-head small { color:var(--muted);font-size:.57rem; }
.saved-instrument { width:100%;padding:9px 8px;display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:9px;border:0;border-top:1px solid rgba(137,151,210,.1);color:var(--text);background:transparent;text-align:left; }
.saved-instrument:first-of-type { border-top:0; }
.saved-instrument>[data-instrument-icon] { width:36px;height:36px;display:grid;place-items:center;border-radius:12px;color:#b8c7ff;background:rgba(97,93,213,.1); }
.saved-instrument>[data-instrument-icon] svg { width:23px;height:23px; }
.saved-instrument strong,.saved-instrument small { display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.saved-instrument strong { font-size:.72rem; }.saved-instrument small { margin-top:2px;color:#8792b1;font-size:.58rem; }
.saved-instrument>.icon { width:17px;height:17px;color:#7c88a9; }
.planner-next { margin-top: 14px; }
.planner-equipment-form,.planner-location-form { padding:15px;border:1px solid rgba(132,149,216,.16);border-radius:21px;background:linear-gradient(145deg,rgba(17,24,53,.94),rgba(8,13,31,.97)); }
.planner-field-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
.planner-field-grid label { min-width:0; }
.planner-field-grid label.is-disabled { opacity:.45; }
.planner-field-grid input { min-width:0; }
.planner-privacy-note { margin:4px 0 0;padding:9px 10px;display:flex;gap:7px;border:1px solid rgba(99,218,190,.13);border-radius:12px;color:#8fa9b0;background:rgba(36,120,105,.07);font-size:.58rem;line-height:1.45; }
.planner-privacy-note span { color:#75dfc0; }
.planner-actions { margin-top:13px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px; }
.planner-actions .button { min-width:0;padding-inline:12px; }
.planner-address-control { position:relative; }
.planner-address-icon { position:absolute;z-index:1;left:13px;top:50%;width:20px;height:20px;display:grid;place-items:center;transform:translateY(-50%);color:#9da8ca;pointer-events:none; }
.planner-address-icon .icon { width:19px;height:19px;display:block; }
.planner-address-control input { padding-left:44px; }
.planner-location-result { padding:10px 11px;display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;align-items:center;border:1px solid rgba(86,225,180,.25);border-radius:14px;color:#d8fff2;background:rgba(37,132,104,.12); }
.planner-location-result>span { width:28px;height:28px;display:grid;place-items:center;border-radius:10px;background:rgba(85,222,178,.15);font-weight:900; }
.planner-location-result strong,.planner-location-result small { display:block;overflow-wrap:anywhere; }
.planner-location-result strong { font-size:.71rem; }.planner-location-result small { margin-top:2px;color:#89b8a9;font-size:.56rem; }
.planner-location-status { min-height:18px;margin:0;color:#91a0c1;font-size:.61rem;line-height:1.4; }
.planner-location-status[data-state="success"] { color:#8ee1c4; }.planner-location-status[data-state="error"] { color:#ff9eb4; }
.planner-resume { margin:0 0 17px;padding:13px;display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:center;border-color:rgba(105,224,188,.21);background:radial-gradient(circle at 90% 10%,rgba(50,194,157,.13),transparent 37%),linear-gradient(145deg,rgba(18,36,62,.97),rgba(8,15,33,.98)); }
.planner-resume-icon { width:40px;height:40px;display:grid;place-items:center;border-radius:14px;color:#8bf1cf;background:rgba(50,164,132,.13);box-shadow:0 0 20px rgba(67,218,174,.08); }
.planner-resume h2 { margin:2px 0;font-size:.85rem; }.planner-resume p:not(.section-kicker) { margin:0;color:#8e9ab9;font-size:.59rem; }
.planner-resume .button { grid-column:1/-1; }
.catalog-hero-card { position:relative;min-height:150px;padding:17px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:13px;align-items:end;overflow:hidden;border:1px solid rgba(119,142,255,.22);border-radius:24px;background:radial-gradient(circle at 82% 12%,rgba(76,105,242,.24),transparent 32%),linear-gradient(145deg,rgba(20,30,72,.98),rgba(7,13,32,.99));box-shadow:0 19px 44px rgba(0,0,0,.22); }
.catalog-hero-card>* { position:relative;z-index:2; }.catalog-hero-card h2 { margin:3px 0 5px;font-size:1.25rem; }.catalog-hero-card p:not(.section-kicker) { margin:0;color:#9eabc9;font-size:.65rem;line-height:1.45; }
.catalog-weather-orbit { position:absolute;z-index:1;right:-30px;top:-52px;width:165px;height:165px;border:1px solid rgba(140,159,255,.17);border-radius:50%; }
.catalog-weather-orbit::before { content:"";position:absolute;inset:25px;border:1px solid rgba(93,221,195,.11);border-radius:50%; }
.catalog-weather-orbit i,.catalog-weather-orbit b { position:absolute;border-radius:50%; }.catalog-weather-orbit i { width:8px;height:8px;left:16px;bottom:42px;background:#72e8c2;box-shadow:0 0 14px rgba(114,232,194,.8); }.catalog-weather-orbit b { width:4px;height:4px;right:37px;bottom:19px;background:#fff;box-shadow:0 0 9px #fff; }
.catalog-score { width:68px;height:68px;display:grid;place-items:center;align-content:center;border:1px solid rgba(150,166,255,.2);border-radius:22px;background:rgba(5,11,31,.52);backdrop-filter:blur(12px); }
.catalog-score strong { font-size:1.25rem;line-height:1; }.catalog-score small { margin-top:3px;color:#8d99ba;font-size:.48rem;text-align:center;text-transform:uppercase; }
.catalog-current { margin:11px 0;padding:11px;display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center;border:1px solid rgba(88,229,184,.23);border-radius:18px;background:linear-gradient(145deg,rgba(38,132,107,.14),rgba(12,34,45,.6)); }
.catalog-current>[data-current-object-icon] { width:42px;height:42px;display:grid;place-items:center;border-radius:14px;color:#a7f4d9;background:rgba(55,169,135,.14); }
.catalog-current svg { width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }.catalog-current svg .fill { fill:currentColor;stroke:none; }
.catalog-current small,.catalog-current strong,.catalog-current p { display:block;margin:0; }.catalog-current small { color:#71c9ae;font-size:.49rem;font-weight:850;letter-spacing:.09em; }.catalog-current strong { margin-top:2px;font-size:.78rem; }.catalog-current p { margin-top:2px;color:#819e9a;font-size:.55rem;line-height:1.35; }
.catalog-current .button { grid-column:1/-1;min-height:36px; }
.catalog-summary { margin:11px 0;display:grid;grid-template-columns:repeat(3,1fr);overflow:hidden;border:1px solid rgba(131,148,212,.15);border-radius:17px;background:rgba(255,255,255,.022); }
.catalog-summary span { min-width:0;padding:10px 5px;text-align:center;border-inline-end:1px solid rgba(130,146,207,.12); }.catalog-summary span:last-child { border:0; }
.catalog-summary strong,.catalog-summary small { display:block; }.catalog-summary strong { font-size:.95rem; }.catalog-summary small { margin-top:2px;color:#7f8aa8;font-size:.49rem;text-transform:uppercase;letter-spacing:.04em; }
.catalog-toolbar { position:sticky;z-index:7;top:63px;margin:11px -2px;padding:9px 2px;background:linear-gradient(180deg,rgba(6,10,24,.98) 75%,transparent); }
.catalog-search { position:relative;display:block; }.catalog-search>span { position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#8995b7; }.catalog-search input { padding-left:37px; }
.catalog-filters { margin-top:8px;padding-bottom:3px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;overscroll-behavior-inline:contain; }.catalog-filters::-webkit-scrollbar { display:none; }
.catalog-filters button { flex:0 0 auto;min-height:31px;padding:6px 10px;border:1px solid rgba(131,147,207,.14);border-radius:999px;color:#8d98b8;background:rgba(255,255,255,.025);font-size:.57rem;font-weight:800;white-space:nowrap; }
.catalog-filters button.is-active { border-color:rgba(135,118,255,.45);color:#e9e7ff;background:rgba(107,91,225,.16); }
.catalog-loading { min-height:170px;display:grid;place-items:center;align-content:center;gap:6px;text-align:center;color:#b6c0dc; }.catalog-loading>span { width:30px;height:30px;border:2px solid rgba(147,160,219,.16);border-top-color:#8d7cff;border-radius:50%;animation:spin .8s linear infinite; }.catalog-loading strong { font-size:.76rem; }.catalog-loading small { max-width:260px;color:#7783a3;font-size:.58rem; }
.celestial-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px; }
.celestial-card { position:relative;min-width:0;min-height:171px;padding:13px 11px 11px;display:grid;grid-template-rows:50px minmax(0,1fr) auto;align-items:start;text-align:left;overflow:hidden;border:1px solid rgba(131,148,210,.15);border-radius:20px;color:#e9edff;background:radial-gradient(circle at 88% 8%,rgba(93,91,223,.12),transparent 31%),linear-gradient(150deg,rgba(18,26,58,.96),rgba(7,12,29,.99));box-shadow:inset 0 1px rgba(255,255,255,.025);transition:transform .15s ease,border-color .15s ease; }
.celestial-card:active { transform:scale(.98); }
.celestial-card.status-excellent { border-color:rgba(94,225,185,.3);background:radial-gradient(circle at 88% 8%,rgba(51,186,147,.17),transparent 33%),linear-gradient(150deg,rgba(17,42,57,.97),rgba(7,17,29,.99)); }
.celestial-card.status-good { border-color:rgba(103,176,255,.27); }
.celestial-card.status-unavailable { opacity:.62;filter:saturate(.7); }
.celestial-card.is-observed { border-color:rgba(103,226,172,.58);box-shadow:0 0 0 1px rgba(76,211,157,.1),inset 0 1px rgba(255,255,255,.03),0 10px 27px rgba(29,103,78,.08); }
.celestial-card-icon { width:48px;height:48px;display:grid;place-items:center;border-radius:16px;color:#b7c5ff;background:linear-gradient(145deg,rgba(108,97,226,.16),rgba(65,132,191,.08)); }
.status-excellent .celestial-card-icon,.is-observed .celestial-card-icon { color:#a3f3d5;background:rgba(54,169,132,.14); }
.celestial-card-icon svg { width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }.celestial-card-icon svg .fill { fill:currentColor;stroke:none; }
.celestial-card-copy { min-width:0;display:block;margin-top:8px; }.celestial-card-copy>small,.celestial-card-copy>strong,.celestial-card-copy>span { display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.celestial-card-copy>small { color:#7784a7;font-size:.49rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase; }.celestial-card-copy>strong { margin-top:3px;font-size:.74rem; }.celestial-card-copy>span { margin-top:3px;color:#8d99b8;font-size:.54rem; }
.celestial-card-score { margin-top:9px;display:flex;align-items:flex-end;justify-content:space-between;gap:6px; }.celestial-card-score b { font-size:.84rem; }.celestial-card-score small { max-width:82px;color:#8290b0;font-size:.5rem;text-align:right;line-height:1.2; }
.celestial-observed-badge { position:absolute;right:8px;top:8px;padding:4px 6px;border:1px solid rgba(86,222,166,.25);border-radius:999px;color:#a6f0d1;background:rgba(34,117,88,.22);font-size:.46rem;font-weight:850; }
.catalog-empty { min-height:170px;display:grid;place-items:center;align-content:center;gap:4px;text-align:center;border:1px dashed rgba(133,148,208,.18);border-radius:20px;color:#a5afcc; }.catalog-empty>span { color:#8c7cff;font-size:1.5rem; }.catalog-empty strong { font-size:.76rem; }.catalog-empty p { margin:0;color:#727e9e;font-size:.59rem; }
.celestial-modal { position:fixed;z-index:120;inset:0;display:grid;align-items:end; }
.celestial-modal-backdrop { position:absolute;inset:0;border:0;background:rgba(2,5,15,.78);backdrop-filter:blur(8px); }
.celestial-modal-panel { position:relative;z-index:2;width:100%;max-height:88dvh;padding:22px 16px calc(18px + env(safe-area-inset-bottom));overflow-y:auto;border:1px solid rgba(151,165,226,.2);border-radius:28px 28px 0 0;background:radial-gradient(circle at 82% 4%,rgba(83,86,225,.17),transparent 27%),linear-gradient(160deg,#111936,#070c1e 75%);box-shadow:0 -24px 70px rgba(0,0,0,.48);animation:modalSheetIn .22s ease; }
@keyframes modalSheetIn { from{transform:translateY(22px);opacity:0} }
.celestial-modal-close { position:absolute;right:13px;top:13px;width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(148,160,217,.16);border-radius:13px;color:#c3cbe2;background:rgba(5,10,27,.56); }.celestial-modal-close .icon { width:18px;height:18px; }
.celestial-modal-visual { width:70px;height:70px;margin-bottom:12px;display:grid;place-items:center;border:1px solid rgba(126,142,220,.17);border-radius:24px;color:#c2cbff;background:linear-gradient(145deg,rgba(103,94,229,.2),rgba(40,110,159,.1));box-shadow:0 14px 35px rgba(28,29,87,.2); }
.celestial-modal-visual svg { width:49px;height:49px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round; }.celestial-modal-visual svg .fill { fill:currentColor;stroke:none; }
.celestial-modal-panel h2 { margin:3px 43px 6px 0;font-size:1.45rem; }.celestial-modal-description { margin:0;color:#a1abc8;font-size:.7rem;line-height:1.55; }
.celestial-modal-status { margin:13px 0;padding:9px 10px;display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(132,148,211,.14);border-radius:13px;background:rgba(255,255,255,.026); }.celestial-modal-status span { font-size:.65rem;font-weight:850; }.celestial-modal-status span.status-excellent { color:#87e8c7; }.celestial-modal-status span.status-good { color:#87c8ff; }.celestial-modal-status span.status-unavailable { color:#f2a4b6; }.celestial-modal-status strong { font-size:.79rem; }
.celestial-coordinates { margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px; }.celestial-coordinates>div { min-width:0;padding:9px;border:1px solid rgba(130,145,207,.12);border-radius:13px;background:rgba(255,255,255,.02); }.celestial-coordinates dt { color:#7783a5;font-size:.49rem;text-transform:uppercase;letter-spacing:.05em; }.celestial-coordinates dd { margin:3px 0 0;color:#dde3f8;font-size:.66rem;font-weight:750;font-variant-numeric:tabular-nums;overflow-wrap:anywhere; }
.celestial-guidance { margin-top:10px;display:grid;gap:8px; }.celestial-guidance article { padding:10px;border-left:2px solid rgba(127,111,255,.45);border-radius:0 12px 12px 0;background:rgba(255,255,255,.022); }.celestial-guidance strong { display:block;font-size:.65rem; }.celestial-guidance p { margin:3px 0 0;color:#8e9aba;font-size:.59rem;line-height:1.48; }
.celestial-history { margin:10px 0;padding:9px 10px;border:1px solid rgba(130,145,204,.13);border-radius:13px;color:#8d98b7;background:rgba(255,255,255,.02);font-size:.59rem;line-height:1.4; }.celestial-history.is-observed { border-color:rgba(86,221,168,.24);color:#a6e9d0;background:rgba(38,123,94,.1); }
.celestial-coordinate-note { display:block;margin:0 2px 12px;color:#6f7b9c;font-size:.52rem;line-height:1.45; }.celestial-observe-button { min-height:48px; }
body.modal-open { overflow:hidden; }

/* Le badge orbital garde le point et le texte parfaitement centrés. */
.satellite-live-status { min-height:34px;justify-content:center;line-height:1;text-align:center; }
.satellite-live-status i { flex:0 0 7px;align-self:center; }

@media(max-width:360px) {
  .planner-hero { padding-inline:15px; }.planner-field-grid { grid-template-columns:1fr; }.instrument-choice { min-height:136px;padding-inline:10px; }
  .celestial-grid { gap:7px; }.celestial-card { min-height:165px;padding-inline:9px; }.celestial-card-score small { max-width:65px; }
}
@media(prefers-reduced-motion:reduce) {
  .planner-hero::after,.planner-hero-orbit i { animation:none; }
}

/* Cartes d'observation communautaires et lancement depuis le profil. */
.active-observation-stack { display:grid;gap:9px; }
.active-observation-card { min-width:0;padding:11px 12px;display:grid;grid-template-columns:44px minmax(0,1fr) 20px;align-items:center;gap:10px;border:1px solid rgba(83,225,180,.22);border-radius:18px;color:var(--text);background:radial-gradient(circle at 90% 8%,rgba(48,188,149,.13),transparent 34%),linear-gradient(145deg,rgba(16,39,53,.94),rgba(7,16,29,.98));box-shadow:inset 0 1px rgba(255,255,255,.025); }
.active-observation-avatar { position:relative;width:44px;height:44px; }.active-observation-avatar img { width:44px;height:44px;object-fit:cover;border:1px solid rgba(128,231,199,.28);border-radius:14px; }.active-observation-avatar i { position:absolute;right:-2px;bottom:-2px;width:10px;height:10px;border:2px solid #08111d;border-radius:50%;background:#61e4b7;box-shadow:0 0 10px rgba(97,228,183,.72); }
.active-observation-copy { min-width:0; }.active-observation-copy small,.active-observation-copy strong,.active-observation-copy span { display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }.active-observation-copy small { color:#70c8ab;font-size:.47rem;font-weight:850;letter-spacing:.09em; }.active-observation-copy strong { margin-top:2px;font-size:.76rem; }.active-observation-copy span { margin-top:3px;color:#809891;font-size:.56rem; }.active-observation-arrow { width:18px;height:18px;color:#79a99a; }
.profile-observation-launch { margin:0 0 17px; }
.observation-launch-button { position:relative;min-height:120px;padding:17px 14px;display:grid;grid-template-columns:48px minmax(0,1fr) 20px;align-items:center;gap:11px;overflow:hidden;border:1px solid rgba(132,118,255,.38);border-radius:23px;color:#f3f4ff;background:radial-gradient(circle at 83% 12%,rgba(95,80,242,.28),transparent 35%),radial-gradient(circle at 8% 90%,rgba(45,198,196,.11),transparent 36%),linear-gradient(145deg,rgba(28,29,79,.98),rgba(7,12,31,.99));box-shadow:0 18px 42px rgba(23,20,77,.22),inset 0 1px rgba(255,255,255,.04); }
.observation-launch-button::after { content:"";position:absolute;inset:-70% -30%;background:linear-gradient(112deg,transparent 43%,rgba(255,255,255,.26) 49%,transparent 55%);opacity:0;transform:translateX(-70%) rotate(-8deg);animation:launchMeteor 7.5s ease-in-out infinite;pointer-events:none; }
@keyframes launchMeteor { 0%,70%{opacity:0;transform:translateX(-70%) rotate(-8deg)} 77%{opacity:.18} 96%,100%{opacity:0;transform:translateX(70%) rotate(-8deg)} }
.observation-launch-button>* { position:relative;z-index:2; }
.observation-launch-icon { width:48px;height:48px;display:grid;place-items:center;border:1px solid rgba(174,166,255,.2);border-radius:17px;color:#d4d5ff;background:linear-gradient(145deg,rgba(120,95,255,.26),rgba(55,120,191,.12));box-shadow:0 10px 24px rgba(37,28,112,.25); }.observation-launch-icon .icon { width:29px;height:29px; }
.observation-launch-copy { min-width:0; }.observation-launch-copy small,.observation-launch-copy strong,.observation-launch-copy span { display:block; }.observation-launch-copy small { color:#9387ff;font-size:.48rem;font-weight:900;letter-spacing:.1em; }.observation-launch-copy strong { margin-top:3px;font-size:.86rem;line-height:1.2; }.observation-launch-copy span { margin-top:4px;color:#8e98b8;font-size:.55rem;line-height:1.35; }
.observation-launch-arrow { width:19px;height:19px;color:#b2b7e2; }
.observation-launch-stars { position:absolute;z-index:1;inset:0;pointer-events:none; }.observation-launch-stars i,.observation-launch-stars b { position:absolute;border-radius:50%;background:#fff;box-shadow:0 0 8px rgba(255,255,255,.85);animation:launchTwinkle 2.7s ease-in-out infinite; }.observation-launch-stars i:nth-child(1){width:2px;height:2px;left:17%;top:16%}.observation-launch-stars i:nth-child(2){width:3px;height:3px;left:63%;top:21%;animation-delay:.5s}.observation-launch-stars i:nth-child(3){width:2px;height:2px;left:82%;top:62%;animation-delay:1.2s}.observation-launch-stars i:nth-child(4){width:2px;height:2px;left:42%;bottom:15%;animation-delay:1.7s}.observation-launch-stars b:nth-of-type(1){width:4px;height:4px;right:12%;top:19%;background:#77eac6;box-shadow:0 0 12px rgba(119,234,198,.9)}.observation-launch-stars b:nth-of-type(2){width:3px;height:3px;left:8%;bottom:16%;background:#9da8ff}.observation-launch-orbit { position:absolute;z-index:1;right:-27px;top:-56px;width:145px;height:145px;border:1px solid rgba(152,144,255,.16);border-radius:50%;transform:rotate(-18deg); }.observation-launch-orbit::before { content:"";position:absolute;inset:25px;border:1px solid rgba(102,224,199,.11);border-radius:50%; }
@keyframes launchTwinkle { 50%{opacity:.28;transform:scale(.72)} }
.profile-current-observation { margin:0 0 18px;padding:14px;border:1px solid rgba(84,225,181,.24);border-radius:21px;background:radial-gradient(circle at 89% 9%,rgba(49,188,148,.14),transparent 34%),linear-gradient(145deg,rgba(16,43,54,.96),rgba(7,17,30,.99));box-shadow:inset 0 1px rgba(255,255,255,.025); }
.profile-current-observation-head { display:flex;align-items:center;justify-content:space-between;gap:10px; }.profile-current-observation-head>span { display:inline-flex;align-items:center;gap:6px;color:#80dec0;font-size:.5rem;font-weight:900;letter-spacing:.09em; }.profile-current-observation-head i { width:7px;height:7px;border-radius:50%;background:#61e3b5;box-shadow:0 0 12px rgba(97,227,181,.8); }.profile-current-observation-head small { color:#68827c;font-size:.5rem; }
.profile-current-observation-body { margin:12px 0;display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center; }.profile-current-object-icon { width:42px;height:42px;display:grid;place-items:center;border-radius:14px;color:#91ebcd;background:rgba(48,155,121,.14);font-size:1.15rem; }.profile-current-observation-body strong { display:block;font-size:.78rem; }.profile-current-observation-body p { margin:3px 0 0;color:#7f9b92;font-size:.58rem;line-height:1.4; }
.member-observing { width:max-content;max-width:100%;margin-top:5px;padding:4px 7px;display:block!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid rgba(80,220,173,.2);border-radius:999px;color:#8fe4c5!important;background:rgba(37,126,96,.11);font-size:.5rem!important;font-weight:800; }
@media(prefers-reduced-motion:reduce) { .observation-launch-button::after,.observation-launch-stars i,.observation-launch-stars b { animation:none; } }

/* Transition premium entre le profil et l'observatoire. */
.observation-launch-button { transition:transform .16s ease,border-color .22s ease,box-shadow .22s ease,filter .22s ease; }
.observation-launch-button:active,.observation-launch-button.is-launching { transform:scale(.985);border-color:rgba(151,137,255,.76);box-shadow:0 14px 34px rgba(30,25,102,.3),0 0 0 1px rgba(105,211,255,.09),inset 0 1px rgba(255,255,255,.07);filter:saturate(1.08); }
.observation-launch-button.is-launching { pointer-events:none; }
.observation-launch-button.is-launching .observation-launch-icon { animation:observationLaunchPulse .52s cubic-bezier(.22,1,.36,1) both; }
@keyframes observationLaunchPulse { 45%{transform:scale(.84);box-shadow:0 0 0 7px rgba(122,108,255,.12),0 0 28px rgba(89,211,255,.22)} 100%{transform:scale(1.08);box-shadow:0 0 0 12px rgba(122,108,255,0),0 0 32px rgba(89,211,255,.18)} }
body.observation-transition-active { overflow:hidden;touch-action:none; }
.observation-transition { --portal-x:50vw;--portal-y:45vh;position:fixed;z-index:400;inset:0;overflow:hidden;pointer-events:auto;isolation:isolate;color:#f8f9ff;background:transparent; }
.observation-transition-surface { position:absolute;z-index:1;inset:-1px;background:radial-gradient(circle at 50% 42%,rgba(98,89,255,.29),transparent 29%),radial-gradient(circle at 78% 15%,rgba(50,206,225,.13),transparent 24%),linear-gradient(160deg,#090b27 0%,#040818 58%,#030611 100%);clip-path:circle(0 at var(--portal-x) var(--portal-y));transition:clip-path .78s cubic-bezier(.22,1,.36,1);will-change:clip-path; }
.observation-transition.is-active .observation-transition-surface { clip-path:circle(150vmax at var(--portal-x) var(--portal-y)); }
.observation-transition-nebula { position:absolute;inset:-30%;opacity:.72;background:conic-gradient(from 110deg at 52% 43%,transparent 0 13%,rgba(100,79,255,.13) 20%,transparent 31% 57%,rgba(46,197,218,.08) 66%,transparent 78%);filter:blur(30px);animation:observationNebulaTurn 8s linear infinite; }
.observation-transition-grid { position:absolute;inset:0;opacity:.15;background-image:radial-gradient(circle at center,transparent 0 20%,rgba(132,139,255,.2) 20.4% 20.8%,transparent 21.2% 30%,rgba(89,207,218,.12) 30.4% 30.7%,transparent 31.1%);transform:scale(1.5); }
.observation-transition-stars { position:absolute;inset:0; }
.observation-transition-stars i { position:absolute;width:3px;height:3px;border-radius:50%;opacity:0;background:#fff;box-shadow:0 0 11px rgba(255,255,255,.9);animation:observationStarDrift 2.4s ease-out infinite; }
.observation-transition-stars i:nth-child(1){left:10%;top:20%;animation-delay:.04s}.observation-transition-stars i:nth-child(2){left:22%;top:67%;width:2px;height:2px;animation-delay:.19s}.observation-transition-stars i:nth-child(3){left:36%;top:14%;animation-delay:.34s}.observation-transition-stars i:nth-child(4){left:47%;top:78%;width:2px;height:2px;animation-delay:.12s}.observation-transition-stars i:nth-child(5){left:61%;top:24%;background:#9eabff;animation-delay:.47s}.observation-transition-stars i:nth-child(6){left:73%;top:71%;width:2px;height:2px;animation-delay:.25s}.observation-transition-stars i:nth-child(7){left:88%;top:31%;background:#75e6d0;animation-delay:.4s}.observation-transition-stars i:nth-child(8){left:81%;top:86%;animation-delay:.08s}.observation-transition-stars i:nth-child(9){left:16%;top:87%;background:#92dfff;animation-delay:.52s}.observation-transition-stars i:nth-child(10){left:55%;top:54%;width:2px;height:2px;animation-delay:.3s}.observation-transition-stars i:nth-child(11){left:92%;top:62%;width:2px;height:2px;animation-delay:.16s}.observation-transition-stars i:nth-child(12){left:31%;top:43%;background:#b2a6ff;animation-delay:.58s}
.observation-transition-system { position:absolute;z-index:3;left:var(--portal-x);top:var(--portal-y);width:156px;height:156px;opacity:0;transform:translate(-50%,-50%) scale(.3);transition:left .82s cubic-bezier(.22,1,.36,1),top .82s cubic-bezier(.22,1,.36,1),transform .82s cubic-bezier(.22,1,.36,1),opacity .18s ease;will-change:left,top,transform; }
.observation-transition.is-active .observation-transition-system { left:50%;top:43%;opacity:1;transform:translate(-50%,-50%) scale(1); }
.observation-transition-eye { position:absolute;z-index:4;left:50%;top:50%;width:72px;height:72px;display:grid;place-items:center;border:1px solid rgba(189,190,255,.5);border-radius:25px;color:#f3f2ff;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.18),transparent 28%),linear-gradient(145deg,rgba(121,101,255,.92),rgba(55,85,201,.88));box-shadow:0 0 0 11px rgba(111,95,255,.08),0 0 52px rgba(88,89,255,.48),0 0 80px rgba(59,207,225,.15);transform:translate(-50%,-50%); }
.observation-transition-eye .icon { width:39px;height:39px;filter:drop-shadow(0 0 9px rgba(255,255,255,.32)); }
.observation-transition-orbit { position:absolute;left:50%;top:50%;border:1px solid rgba(169,162,255,.3);border-radius:50%;transform:translate(-50%,-50%) rotate(-18deg); }
.observation-transition-orbit i { position:absolute;left:50%;top:-3px;width:6px;height:6px;border-radius:50%;background:#84f2d4;box-shadow:0 0 15px rgba(132,242,212,.9); }
.observation-transition-orbit-one { width:112px;height:112px;animation:observationOrbitSpin 3.8s linear infinite; }
.observation-transition-orbit-two { width:143px;height:82px;border-color:rgba(95,214,235,.22);animation:observationOrbitSpinReverse 4.6s linear infinite; }
.observation-transition-orbit-two i { left:19%;top:5px;width:4px;height:4px;background:#91a2ff; }
.observation-transition-orbit-three { width:150px;height:150px;border-color:rgba(154,146,255,.11);animation:observationOrbitSpin 6.8s linear infinite; }
.observation-transition-flare { position:absolute;left:50%;top:50%;width:24px;height:24px;border:1px solid rgba(115,224,234,.55);border-radius:50%;opacity:0;transform:translate(-50%,-50%);animation:observationFlare 1.05s .08s cubic-bezier(.22,1,.36,1) both; }
.observation-transition-copy { position:absolute;z-index:4;left:24px;right:24px;top:calc(43% + 104px);text-align:center;opacity:0;transform:translateY(13px);transition:opacity .34s .48s ease,transform .56s .44s cubic-bezier(.22,1,.36,1); }
.observation-transition.is-active .observation-transition-copy { opacity:1;transform:translateY(0); }
.observation-transition-copy small,.observation-transition-copy strong,.observation-transition-copy span { display:block; }
.observation-transition-copy small { color:#9c91ff;font-size:.58rem;font-weight:900;letter-spacing:.18em; }
.observation-transition-copy strong { margin-top:7px;font-size:clamp(1.24rem,6vw,1.6rem);letter-spacing:-.035em; }
.observation-transition-copy span { margin-top:6px;color:#a5aecf;font-size:.68rem; }
@keyframes observationNebulaTurn { to{transform:rotate(1turn)} }
@keyframes observationStarDrift { 0%{opacity:0;transform:translate(0,12px) scale(.6)} 28%{opacity:.9} 100%{opacity:0;transform:translate(7px,-22px) scale(1.2)} }
@keyframes observationOrbitSpin { to{transform:translate(-50%,-50%) rotate(342deg)} }
@keyframes observationOrbitSpinReverse { to{transform:translate(-50%,-50%) rotate(-378deg)} }
@keyframes observationFlare { 0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)} 100%{opacity:0;transform:translate(-50%,-50%) scale(8)} }
.screen-observation-planner.observation-page-arrival .topbar,.screen-observation-planner.observation-page-arrival .page-content,.screen-observation-planner.observation-page-arrival .bottom-nav { opacity:0;transform:translateY(10px); }
.screen-observation-planner.observation-page-arrival-ready .topbar,.screen-observation-planner.observation-page-arrival-ready .page-content,.screen-observation-planner.observation-page-arrival-ready .bottom-nav { opacity:1;transform:none;transition:opacity .34s ease,transform .48s cubic-bezier(.22,1,.36,1); }
@media(prefers-reduced-motion:reduce) {
  .observation-launch-button,.observation-launch-icon,.observation-transition *,.screen-observation-planner.observation-page-arrival * { animation:none!important;transition:none!important; }
  .observation-transition.is-reduced { background:#050816;opacity:0;transition:opacity .12s ease!important; }
  .observation-transition.is-reduced.is-active { opacity:1; }
  .observation-transition.is-reduced .observation-transition-surface { clip-path:none; }
  .observation-transition.is-reduced .observation-transition-system,.observation-transition.is-reduced .observation-transition-copy { display:none; }
  .screen-observation-planner.observation-page-arrival .topbar,.screen-observation-planner.observation-page-arrival .page-content,.screen-observation-planner.observation-page-arrival .bottom-nav { opacity:1;transform:none; }
}

/* Conteneurs fonctionnels du module d'observation. */
.home-active-observations{display:grid;gap:12px}
.observation-catalog{display:grid;gap:18px}
.observation-catalog[hidden]{display:none!important}

/* V44 — catalogue mobile compact, trois objets par ligne et largeur strictement contenue. */
.screen-observation-planner {
  --page-gutter: 12px;
}

.screen-observation-planner .page-content,
.planner-page,
.planner-page > *,
.observation-catalog,
.observation-catalog > *,
.catalog-hero-copy,
.catalog-toolbar,
.catalog-search,
.catalog-filters,
.celestial-grid {
  min-width: 0;
  max-width: 100%;
}

.planner-page {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.observation-catalog {
  width: 100%;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
}

/* Une fois le catalogue ouvert, le grand héros devient une barre compacte :
   aucune répétition de titre et davantage de ciel visible à l'écran. */
.planner-page.is-catalog-open .planner-hero {
  min-height: 0;
  padding: 9px 10px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  border-radius: 17px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .2), inset 0 1px rgba(255,255,255,.035);
}

.planner-page.is-catalog-open .planner-hero::before,
.planner-page.is-catalog-open .planner-hero::after,
.planner-page.is-catalog-open .planner-hero-orbit,
.planner-page.is-catalog-open .planner-hero > .section-kicker,
.planner-page.is-catalog-open .planner-hero > h1,
.planner-page.is-catalog-open .planner-hero > p:not(.section-kicker) {
  display: none;
}

.planner-page.is-catalog-open .planner-back {
  min-height: 31px;
  padding: 5px 9px 5px 7px;
  font-size: .61rem;
}

.planner-page.is-catalog-open .planner-live-pill {
  min-width: 0;
  width: max-content;
  max-width: 100%;
  margin: 0;
  padding: 7px 9px;
  justify-self: end;
  font-size: .49rem;
  line-height: 1;
}

.planner-page.is-catalog-open .planner-live-pill span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catalog-hero-card {
  width: 100%;
  min-height: 112px;
  padding: 13px;
  grid-template-columns: minmax(0, 1fr) 56px;
  align-items: center;
  gap: 10px;
  border-radius: 20px;
}

.catalog-hero-copy {
  position: relative;
  z-index: 2;
}

.catalog-hero-card h2 {
  margin: 3px 0 4px;
  font-size: 1.03rem;
  line-height: 1.08;
}

.catalog-hero-card p:not(.section-kicker) {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size: .56rem;
  line-height: 1.4;
}

.catalog-weather-orbit {
  right: -43px;
  top: -70px;
  width: 148px;
  height: 148px;
}

.catalog-score {
  width: 56px;
  height: 56px;
  border-radius: 18px;
}

.catalog-score strong { font-size: 1.02rem; }
.catalog-score small { font-size: .41rem; }

.catalog-current {
  width: 100%;
  margin: 0;
  padding: 9px;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  gap: 8px;
  border-radius: 15px;
}

.catalog-current > [data-current-object-icon] {
  width: 36px;
  height: 36px;
  border-radius: 12px;
}

.catalog-current svg { width: 24px; height: 24px; }
.catalog-current > div { min-width: 0; }
.catalog-current small,
.catalog-current strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.catalog-current small { font-size: .43rem; }
.catalog-current strong { font-size: .68rem; }
.catalog-current p { display: none; }
.catalog-current .button {
  grid-column: auto;
  min-height: 32px;
  padding: 5px 8px;
  font-size: .52rem;
}

.catalog-summary {
  width: 100%;
  margin: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-radius: 15px;
}

.catalog-summary span { padding: 8px 3px; }
.catalog-summary strong { font-size: .82rem; }
.catalog-summary small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .42rem;
}

.catalog-toolbar {
  position: sticky;
  z-index: 7;
  top: calc(var(--topbar-height) + env(safe-area-inset-top));
  width: 100%;
  margin: 0;
  padding: 7px 0 6px;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(6,10,24,.99) 78%, rgba(6,10,24,.9) 90%, transparent);
}

.catalog-search { width: 100%; }
.catalog-search input {
  width: 100%;
  min-width: 0;
  height: 42px;
  padding-left: 35px;
  font-size: .69rem;
}
.catalog-search > span { left: 11px; }

.catalog-filters {
  width: 100%;
  margin-top: 6px;
  padding: 0 0 3px;
  gap: 5px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: inline proximity;
}

.catalog-filters button {
  min-height: 29px;
  padding: 5px 9px;
  scroll-snap-align: start;
  font-size: .52rem;
}

.catalog-loading,
.catalog-empty {
  min-height: 140px;
}

/* Trois véritables tuiles par ligne, sans largeur intrinsèque capable
   d'agrandir la page. Les cartes hors écran ne sont peintes qu'au besoin. */
.celestial-grid {
  width: 100%;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  align-items: stretch;
}

.celestial-card {
  width: 100%;
  min-width: 0;
  min-height: 0;
  aspect-ratio: 1;
  padding: 8px 7px 7px;
  grid-template-rows: 32px minmax(0, 1fr) auto;
  border-radius: 15px;
  contain: layout paint style;
  content-visibility: auto;
  contain-intrinsic-size: 112px 112px;
}

.celestial-card-icon {
  width: 32px;
  height: 32px;
  border-radius: 11px;
}

.celestial-card-icon svg {
  width: 23px;
  height: 23px;
  stroke-width: 2.15;
}

.celestial-card-copy {
  min-height: 0;
  margin-top: 5px;
}

.celestial-card-copy > small,
.celestial-card-copy > strong,
.celestial-card-copy > span {
  min-width: 0;
  line-height: 1.15;
}

.celestial-card-copy > small {
  font-size: .39rem;
  letter-spacing: .045em;
}

.celestial-card-copy > strong {
  margin-top: 2px;
  font-size: .61rem;
}

.celestial-card-copy > span {
  margin-top: 2px;
  font-size: .43rem;
}

.celestial-card-score {
  min-width: 0;
  margin-top: 4px;
  gap: 3px;
}

.celestial-card-score b {
  flex: 0 0 auto;
  font-size: .67rem;
  line-height: 1;
}

.celestial-card-score small {
  min-width: 0;
  max-width: 54px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .39rem;
  line-height: 1.05;
}

.celestial-observed-badge {
  right: 5px;
  top: 5px;
  max-width: 48px;
  padding: 3px 5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .38rem;
}

.celestial-modal-panel {
  max-width: 767px;
  margin-inline: auto;
}

/* Les confirmations du catalogue deviennent un toast temporaire :
   elles ne repoussent plus la grille et ne provoquent plus de saut vertical. */
.planner-page.is-catalog-open .planner-feedback:not([hidden]) {
  position: fixed;
  z-index: 115;
  left: 50%;
  bottom: calc(var(--bottom-nav-height) + env(safe-area-inset-bottom) + 10px);
  width: min(calc(100% - 24px), 743px);
  margin: 0;
  transform: translateX(-50%);
  box-shadow: 0 14px 40px rgba(0,0,0,.42);
}

@media (max-width: 350px) {
  .screen-observation-planner { --page-gutter: 10px; }
  .planner-page.is-catalog-open .planner-live-pill { max-width: 190px; }
  .celestial-grid { gap: 5px; }
  .celestial-card { padding: 7px 6px 6px; border-radius: 14px; }
  .celestial-card-copy > span,
  .celestial-card-score small { display: none; }
  .celestial-card-copy > strong { font-size: .58rem; }
}

@media (prefers-reduced-motion: reduce) {
  .catalog-filters { scroll-behavior: auto; }
}

/* V45 — correctifs de superposition et hiérarchie visuelle du catalogue. */
.screen-observation-planner .catalog-toolbar {
  position: relative;
  top: auto;
  z-index: 4;
  isolation: isolate;
  margin-top: 2px;
  padding-top: 8px;
  background: var(--bg);
}

/* Les recommandations conservent le style neutre du catalogue.
   Le vert est réservé exclusivement aux objets déjà observés. */
.celestial-card.status-excellent,
.celestial-card.status-good {
  border-color: rgba(131, 148, 210, .18);
  background:
    radial-gradient(circle at 88% 8%, rgba(93, 91, 223, .12), transparent 31%),
    linear-gradient(150deg, rgba(18, 26, 58, .96), rgba(7, 12, 29, .99));
}

.celestial-card.status-excellent .celestial-card-icon,
.celestial-card.status-good .celestial-card-icon {
  color: #b7c5ff;
  background: linear-gradient(145deg, rgba(108, 97, 226, .16), rgba(65, 132, 191, .08));
}

.celestial-card.is-observed {
  border-color: rgba(103, 226, 172, .62);
  background:
    radial-gradient(circle at 88% 8%, rgba(51, 186, 147, .18), transparent 33%),
    linear-gradient(150deg, rgba(17, 42, 57, .97), rgba(7, 17, 29, .99));
  box-shadow: 0 0 0 1px rgba(76, 211, 157, .11), inset 0 1px rgba(255,255,255,.03), 0 10px 27px rgba(29,103,78,.08);
}

.celestial-card.is-observed .celestial-card-icon {
  color: #a3f3d5;
  background: rgba(54,169,132,.14);
}

.celestial-card-score small.is-priority-tag {
  max-width: none;
  padding: 3px 5px;
  overflow: visible;
  border: 1px solid rgba(255, 198, 109, .35);
  border-radius: 999px;
  color: #ffd58e;
  background: rgba(255, 180, 70, .11);
  text-overflow: clip;
  font-weight: 850;
  white-space: nowrap;
}

@media (max-width: 350px) {
  .celestial-card-score small.is-priority-tag {
    display: inline-flex;
    max-width: 52px;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}

/* V46 — hiérarchie mobile premium du catalogue et pictogrammes professionnels. */
.planner-page.is-catalog-open {
  row-gap: 15px;
}

.planner-page.is-catalog-open .planner-hero {
  margin: 0;
  padding: 11px 12px;
  gap: 10px;
  border-color: rgba(116, 139, 238, .24);
  border-radius: 20px;
  background:
    radial-gradient(circle at 82% 15%, rgba(80, 84, 219, .13), transparent 34%),
    linear-gradient(145deg, rgba(13, 24, 55, .98), rgba(7, 13, 31, .99));
  box-shadow: 0 12px 30px rgba(0, 0, 0, .22), inset 0 1px rgba(255,255,255,.035);
}

.planner-page.is-catalog-open .planner-back {
  min-height: 34px;
  padding: 6px 11px 6px 8px;
  border-color: rgba(143, 157, 222, .19);
  background: rgba(5, 10, 27, .42);
}

.planner-page.is-catalog-open .planner-live-pill {
  min-height: 34px;
  padding: 8px 11px;
  border-color: rgba(88, 224, 184, .24);
  background: rgba(24, 95, 82, .11);
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}

.planner-page.is-catalog-open .observation-catalog {
  margin-top: 1px;
  gap: 14px;
}

.catalog-hero-card {
  min-height: 132px;
  padding: 18px 16px;
  grid-template-columns: minmax(0, 1fr) 66px;
  align-items: center;
  gap: 16px;
  border-radius: 23px;
  background:
    radial-gradient(circle at 89% 4%, rgba(88, 95, 235, .22), transparent 34%),
    linear-gradient(148deg, rgba(20, 31, 73, .98), rgba(8, 14, 34, .99));
  box-shadow: 0 18px 42px rgba(0,0,0,.24), inset 0 1px rgba(255,255,255,.035);
}

.catalog-hero-copy {
  align-self: center;
}

.catalog-hero-copy .section-kicker {
  margin: 0 0 7px;
  font-size: .48rem;
  letter-spacing: .17em;
}

.catalog-hero-card h2 {
  margin: 0 0 7px;
  max-width: 18ch;
  font-size: clamp(1.05rem, 5vw, 1.25rem);
  line-height: 1.08;
  letter-spacing: -.025em;
}

.catalog-hero-card p:not(.section-kicker) {
  display: block;
  overflow: visible;
  max-width: 34rem;
  color: #9da9c8;
  font-size: .58rem;
  line-height: 1.45;
  -webkit-line-clamp: unset;
}

.catalog-score {
  width: 66px;
  height: 76px;
  border-radius: 21px;
  background: rgba(4, 9, 27, .58);
  box-shadow: inset 0 1px rgba(255,255,255,.03), 0 10px 24px rgba(0,0,0,.17);
}

.catalog-score strong { font-size: 1.16rem; }
.catalog-score small { font-size: .42rem; }

.catalog-weather-orbit {
  right: -40px;
  top: -62px;
  width: 158px;
  height: 158px;
  opacity: .78;
}

/* Pictogrammes homogènes : même grille optique, relief discret et aucune
   couleur verte hors état déjà observé. */
.celestial-card-icon {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(142, 157, 230, .14);
  color: #c2ccff;
  background:
    radial-gradient(circle at 28% 20%, rgba(164, 175, 255, .14), transparent 42%),
    linear-gradient(145deg, rgba(91, 89, 212, .15), rgba(39, 74, 133, .09));
  box-shadow: inset 0 1px rgba(255,255,255,.035);
}

.celestial-card-icon::after {
  content: "";
  position: absolute;
  inset: 4px;
  border: 1px solid rgba(190, 200, 255, .055);
  border-radius: inherit;
  pointer-events: none;
}

.celestial-card-icon svg {
  position: relative;
  z-index: 1;
  stroke-width: 1.75;
}

.celestial-card-icon[data-icon="moon"],
.celestial-card-icon[data-icon="sun"],
.celestial-card-icon[data-icon="mercury"],
.celestial-card-icon[data-icon="venus"],
.celestial-card-icon[data-icon="mars"],
.celestial-card-icon[data-icon="jupiter"],
.celestial-card-icon[data-icon="saturn"],
.celestial-card-icon[data-icon="uranus"],
.celestial-card-icon[data-icon="neptune"] {
  color: #c9c3ff;
  background: linear-gradient(145deg, rgba(99, 88, 211, .18), rgba(52, 77, 143, .1));
}

.celestial-card-icon[data-icon="open-cluster"],
.celestial-card-icon[data-icon="globular-cluster"],
.celestial-card-icon[data-icon="asterism"] {
  color: #b9d5ff;
  background: linear-gradient(145deg, rgba(65, 112, 196, .17), rgba(67, 65, 157, .1));
}

.celestial-card-icon[data-icon="emission-nebula"],
.celestial-card-icon[data-icon="reflection-nebula"],
.celestial-card-icon[data-icon="dark-nebula"],
.celestial-card-icon[data-icon="planetary-nebula"],
.celestial-card-icon[data-icon="supernova-remnant"] {
  color: #d0bfff;
  background: linear-gradient(145deg, rgba(120, 76, 193, .17), rgba(52, 79, 153, .1));
}

.celestial-card-icon[data-icon="galaxy-spiral"],
.celestial-card-icon[data-icon="galaxy-elliptical"],
.celestial-card-icon[data-icon="galaxy-irregular"] {
  color: #bebfff;
  background: linear-gradient(145deg, rgba(86, 81, 206, .17), rgba(47, 92, 154, .1));
}

.celestial-card.is-observed .celestial-card-icon,
.celestial-card.is-observed .celestial-card-icon[data-icon] {
  border-color: rgba(91, 225, 173, .24);
  color: #a3f3d5;
  background: rgba(54,169,132,.14);
}

.celestial-modal-visual {
  border-color: rgba(143, 157, 231, .19);
  color: #c8ceff;
  background:
    radial-gradient(circle at 30% 20%, rgba(173, 181, 255, .16), transparent 42%),
    linear-gradient(145deg, rgba(99, 88, 221, .18), rgba(42, 82, 145, .1));
}

@media (max-width: 380px) {
  .planner-page.is-catalog-open { row-gap: 12px; }
  .planner-page.is-catalog-open .planner-hero { padding: 10px; }
  .planner-page.is-catalog-open .planner-live-pill { max-width: 205px; }
  .catalog-hero-card {
    min-height: 126px;
    padding: 16px 13px;
    grid-template-columns: minmax(0, 1fr) 60px;
    gap: 11px;
  }
  .catalog-hero-card h2 { font-size: 1rem; }
  .catalog-hero-card p:not(.section-kicker) { font-size: .54rem; }
  .catalog-score { width: 60px; height: 70px; border-radius: 19px; }
}

@media (max-width: 335px) {
  .planner-page.is-catalog-open .planner-hero {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 7px;
  }
  .planner-page.is-catalog-open .planner-live-pill {
    max-width: 175px;
    padding-inline: 8px;
    font-size: .44rem;
  }
  .catalog-hero-card {
    grid-template-columns: minmax(0, 1fr) 54px;
    padding-inline: 12px;
  }
  .catalog-score { width: 54px; height: 64px; }
}

/* V47 — reprise/annulation de session, recherche harmonisée et statuts lisibles. */
.planner-resume-actions {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  min-width: 0;
}

.planner-resume .planner-resume-actions .button {
  grid-column: auto;
  width: 100%;
  min-width: 0;
  min-height: 46px;
  padding: 9px 10px;
  line-height: 1.18;
  white-space: normal;
}

.planner-cancel-button {
  border: 1px solid rgba(255, 126, 153, .31);
  color: #ffc5d2;
  background: linear-gradient(145deg, rgba(130, 39, 67, .18), rgba(40, 16, 34, .38));
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}

.planner-cancel-button:active {
  border-color: rgba(255, 139, 163, .48);
  background: rgba(141, 45, 73, .24);
}

.catalog-search-icon {
  display: grid;
  place-items: center;
  pointer-events: none;
}

.catalog-search-icon .icon {
  width: 19px;
  height: 19px;
  stroke-width: 2;
}

/* À privilégier = bleu ciel brillant. Très bon choix reste jaune. */
.celestial-card-score small.is-priority-tag.is-priority-excellent {
  border-color: rgba(108, 216, 255, .58);
  color: #bdefff;
  background: linear-gradient(145deg, rgba(31, 165, 224, .2), rgba(66, 121, 255, .13));
  box-shadow: 0 0 12px rgba(74, 199, 255, .16), inset 0 1px rgba(255,255,255,.08);
}

.celestial-card-score small.is-priority-tag.is-priority-good {
  border-color: rgba(255, 198, 109, .42);
  color: #ffd58e;
  background: rgba(255, 180, 70, .11);
  box-shadow: none;
}

.celestial-modal-status span.status-excellent {
  color: #8edfff;
  text-shadow: 0 0 12px rgba(82, 202, 255, .22);
}

.celestial-modal-status span.status-good {
  color: #ffd58e;
}

@media (max-width: 350px) {
  .planner-resume-actions {
    grid-template-columns: 1fr;
  }

  .planner-resume .planner-resume-actions .button {
    min-height: 42px;
  }
}

/* V49 — catalogue OpenNGC paginé : 14 000+ entrées sans surcharge mobile. */
.catalog-results-meta {
  width: 100%;
  min-width: 0;
  padding: 0 2px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  color: #8792b2;
}

.catalog-results-meta strong {
  min-width: 0;
  overflow: hidden;
  color: #d8def5;
  font-size: .61rem;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catalog-results-meta small {
  flex: 0 0 auto;
  color: #6f7a9d;
  font-size: .48rem;
  white-space: nowrap;
}

.planner-page.is-catalog-loading .celestial-grid {
  opacity: .42;
  pointer-events: none;
  transition: opacity .16s ease;
}

.catalog-loading {
  min-height: 96px;
  padding: 18px 12px;
  border: 1px solid rgba(129, 145, 210, .13);
  border-radius: 17px;
  background: rgba(10, 15, 35, .72);
}

.catalog-loading[hidden] { display: none !important; }

.celestial-card.is-reference {
  border-style: dashed;
  border-color: rgba(130, 143, 195, .18);
  opacity: .78;
}

.celestial-card.is-reference .celestial-card-icon {
  color: #8e9bbf;
  background: rgba(69, 78, 118, .1);
}

.celestial-card.is-reference .celestial-card-score b {
  color: #7d89aa;
}

.catalog-pagination {
  width: 100%;
  min-width: 0;
  margin-top: 2px;
  padding: 10px 8px 8px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid rgba(128, 143, 204, .12);
  border-radius: 17px;
  background: linear-gradient(145deg, rgba(13, 19, 43, .78), rgba(7, 11, 28, .9));
}

.catalog-pagination[hidden] { display: none !important; }

.catalog-pagination button {
  min-width: 34px;
  height: 34px;
  padding: 0 8px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(128, 143, 204, .17);
  border-radius: 11px;
  color: #aeb8d7;
  background: rgba(255, 255, 255, .025);
  font: inherit;
  font-size: .6rem;
  font-weight: 850;
  line-height: 1;
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}

.catalog-pagination button:not(:disabled):active {
  transform: translateY(1px);
}

.catalog-pagination button.is-active {
  border-color: rgba(130, 118, 255, .58);
  color: #fff;
  background: linear-gradient(145deg, #7968f7, #526cff);
  box-shadow: 0 7px 18px rgba(82, 83, 225, .22), inset 0 1px rgba(255,255,255,.16);
}

.catalog-pagination button:disabled {
  cursor: default;
  opacity: .34;
}

.catalog-pagination > span:not(.catalog-page-status) {
  width: 12px;
  color: #647092;
  text-align: center;
  font-size: .58rem;
}

.catalog-pagination .catalog-page-arrow {
  border-color: rgba(139, 155, 220, .22);
  color: #d5dcf7;
  font-size: 1rem;
}

.catalog-page-status {
  flex: 0 0 100%;
  order: 20;
  padding-top: 1px;
  color: #737f9f;
  font-size: .46rem;
  font-weight: 700;
  letter-spacing: .035em;
  text-align: center;
  text-transform: uppercase;
}

.catalog-attribution {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid rgba(124, 140, 201, .1);
  border-radius: 14px;
  color: #6f7b9d;
  background: rgba(255, 255, 255, .018);
  font-size: .48rem;
  line-height: 1.55;
  text-align: center;
}

.catalog-attribution a {
  color: #aebeff;
  text-decoration: none;
}

.catalog-attribution a:focus-visible,
.catalog-attribution a:hover {
  text-decoration: underline;
}

/* Les pictogrammes restent lisibles à trois colonnes et utilisent la même
   boîte optique, quel que soit le type OpenNGC. */
.celestial-card-icon[data-icon="galaxy-pair"],
.celestial-card-icon[data-icon="galaxy-group"],
.celestial-card-icon[data-icon="catalogue"] {
  color: #bdc5ff;
  background: linear-gradient(145deg, rgba(89, 85, 204, .17), rgba(48, 80, 142, .1));
}

@media (max-width: 420px) {
  .catalog-results-meta {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .catalog-results-meta strong,
  .catalog-results-meta small {
    width: 100%;
    white-space: normal;
  }

  .catalog-pagination {
    gap: 5px;
    padding-inline: 6px;
  }

  .catalog-pagination button {
    min-width: 32px;
    height: 32px;
    padding-inline: 7px;
  }
}

@media (max-width: 340px) {
  .catalog-pagination button {
    min-width: 29px;
    height: 30px;
    border-radius: 10px;
    font-size: .55rem;
  }

  .catalog-pagination .catalog-page-arrow { font-size: .88rem; }
  .catalog-attribution { padding-inline: 9px; }
}

@media (prefers-reduced-motion: reduce) {
  .planner-page.is-catalog-loading .celestial-grid { transition: none; }
}

/* V50 — barre de catalogue transparente, missions et succès premium. */
.screen-observation-planner .catalog-toolbar {
  margin: 0;
  padding: 0;
  overflow: visible;
  isolation: auto;
  background: transparent !important;
  box-shadow: none;
}
.screen-observation-planner .catalog-toolbar::before,
.screen-observation-planner .catalog-toolbar::after { display:none!important; }
.screen-observation-planner .catalog-search,
.screen-observation-planner .catalog-filters { background:transparent; }

.profile-progression-launch { margin: 0 0 20px; }
.profile-progression-button {
  position:relative;
  min-width:0;
  padding:15px 13px;
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto 18px;
  gap:11px;
  align-items:center;
  overflow:hidden;
  border:1px solid rgba(151,132,255,.25);
  border-radius:22px;
  color:#edf0ff;
  background:
    radial-gradient(circle at 86% 8%,rgba(127,93,255,.2),transparent 35%),
    radial-gradient(circle at 8% 100%,rgba(55,178,219,.11),transparent 34%),
    linear-gradient(145deg,rgba(24,27,70,.97),rgba(8,13,33,.99));
  box-shadow:0 16px 38px rgba(15,10,62,.2),inset 0 1px rgba(255,255,255,.04);
}
.profile-progression-button::after {
  content:"";position:absolute;inset:auto -25% -65% 35%;height:110%;
  border:1px solid rgba(152,141,255,.12);border-radius:50%;transform:rotate(-12deg);pointer-events:none;
}
.profile-progression-icon {
  position:relative;z-index:1;width:46px;height:46px;display:grid;place-items:center;
  border:1px solid rgba(177,164,255,.22);border-radius:16px;color:#d5ceff;
  background:linear-gradient(145deg,rgba(125,93,255,.28),rgba(53,115,195,.13));
  box-shadow:0 10px 24px rgba(42,29,118,.24),inset 0 1px rgba(255,255,255,.06);
}
.profile-progression-icon svg { width:27px;height:27px; }
.profile-progression-copy { position:relative;z-index:1;min-width:0; }
.profile-progression-copy small,.profile-progression-copy strong,.profile-progression-copy span { display:block; }
.profile-progression-copy small { color:#9e91ff;font-size:.46rem;font-weight:900;letter-spacing:.1em; }
.profile-progression-copy strong { margin-top:3px;font-size:.84rem;line-height:1.2; }
.profile-progression-copy span { margin-top:4px;overflow:hidden;color:#8f9abb;font-size:.54rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap; }
.profile-progression-badge {
  position:relative;z-index:1;min-width:25px;height:25px;padding:0 7px;display:grid;place-items:center;
  border:1px solid rgba(139,211,255,.27);border-radius:999px;color:#bfeaff;background:rgba(45,151,211,.14);
  font-size:.56rem;font-weight:900;
}
.profile-progression-arrow { position:relative;z-index:1;width:18px;height:18px;color:#929bc0; }

.progression-hero {
  position:relative;
  min-width:0;
  margin-bottom:13px;
  padding:17px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:14px;
  overflow:hidden;
  border:1px solid rgba(141,127,255,.25);
  border-radius:25px;
  background:
    radial-gradient(circle at 88% 10%,rgba(112,79,235,.28),transparent 34%),
    radial-gradient(circle at 8% 93%,rgba(47,166,203,.12),transparent 34%),
    linear-gradient(150deg,rgba(24,30,76,.98),rgba(7,12,31,.99));
  box-shadow:0 20px 48px rgba(10,7,49,.28),inset 0 1px rgba(255,255,255,.045);
}
.progression-hero>*:not(.progression-hero-orbit) { position:relative;z-index:2; }
.progression-hero-orbit { position:absolute;right:-65px;top:-68px;width:190px;height:190px;border:1px solid rgba(151,144,255,.14);border-radius:50%; }
.progression-hero-orbit::before { content:"";position:absolute;inset:29px;border:1px solid rgba(80,214,218,.1);border-radius:50%; }
.progression-hero-orbit i,.progression-hero-orbit b { position:absolute;border-radius:50%; }
.progression-hero-orbit i { left:24px;bottom:46px;width:7px;height:7px;background:#73e5d1;box-shadow:0 0 15px rgba(115,229,209,.8); }
.progression-hero-orbit b { right:48px;bottom:18px;width:3px;height:3px;background:#fff;box-shadow:0 0 8px #fff; }
.progression-back {
  grid-column:1/-1;width:max-content;min-height:32px;padding:6px 10px 6px 7px;display:inline-flex;align-items:center;gap:5px;
  border:1px solid rgba(146,158,219,.18);border-radius:999px;color:#dce2fa;background:rgba(5,10,28,.38);font-size:.59rem;font-weight:800;
}
.progression-back .icon { width:17px;height:17px; }
.progression-hero-copy { min-width:0;align-self:end; }
.progression-hero-copy .section-kicker { margin:0 0 7px;color:#9389dd; }
.progression-hero-copy h1 { margin:0;font-size:1.34rem;line-height:1.02;letter-spacing:-.035em; }
.progression-hero-copy p:not(.section-kicker) { margin:8px 0 0;max-width:36rem;color:#9ba7c7;font-size:.61rem;line-height:1.48; }
.progression-level-card {
  min-width:78px;padding:10px 9px;display:grid;grid-template-columns:29px auto;gap:7px;align-items:center;
  border:1px solid rgba(170,157,255,.18);border-radius:19px;background:rgba(5,9,29,.52);backdrop-filter:blur(12px);box-shadow:inset 0 1px rgba(255,255,255,.035);
}
.progression-level-card>span { width:29px;height:29px;display:grid;place-items:center;border-radius:10px;color:#c9c4ff;background:rgba(108,87,221,.18); }
.progression-level-card svg { width:20px;height:20px; }
.progression-level-card small,.progression-level-card strong { display:block; }
.progression-level-card small { color:#7d88aa;font-size:.39rem;font-weight:900;letter-spacing:.09em; }
.progression-level-card strong { margin-top:1px;font-size:1rem;line-height:1; }
.progression-level-card>b { grid-column:1/-1;color:#a8b2d2;font-size:.48rem;text-align:center; }
.progression-level-track { grid-column:1/-1;height:5px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.055); }
.progression-level-track i { display:block;width:var(--progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,#7b68ff,#54c8f0);box-shadow:0 0 11px rgba(102,127,255,.45); }
.progression-hero-stats { grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;border:1px solid rgba(137,151,210,.13);border-radius:16px;background:rgba(4,8,25,.3); }
.progression-hero-stats span { min-width:0;padding:9px 5px;text-align:center;border-inline-end:1px solid rgba(137,151,210,.1); }
.progression-hero-stats span:last-child { border:0; }
.progression-hero-stats strong,.progression-hero-stats small { display:block; }
.progression-hero-stats strong { font-size:.81rem; }
.progression-hero-stats small { margin-top:2px;overflow:hidden;color:#7884a7;font-size:.42rem;text-overflow:ellipsis;white-space:nowrap; }

.progression-tabs { margin-bottom:15px;padding:5px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;border:1px solid rgba(130,145,205,.14);border-radius:18px;background:rgba(8,13,31,.7); }
.progression-tabs a { min-width:0;min-height:46px;padding:8px 10px;display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:center;border:1px solid transparent;border-radius:14px;color:#8995b7; }
.progression-tabs a.is-active { border-color:rgba(143,126,255,.32);color:#eeeaff;background:linear-gradient(145deg,rgba(112,86,235,.21),rgba(53,89,180,.1));box-shadow:inset 0 1px rgba(255,255,255,.035); }
.progression-tabs svg { width:25px;height:25px; }
.progression-tabs span,.progression-tabs strong,.progression-tabs small { min-width:0;display:block; }
.progression-tabs strong { font-size:.65rem; }.progression-tabs small { margin-top:2px;color:#737f9f;font-size:.45rem; }

.progression-intro-card,.achievement-overview {
  margin-bottom:18px;padding:13px;display:grid;gap:11px;align-items:center;border:1px solid rgba(99,211,218,.16);border-radius:19px;
  background:linear-gradient(145deg,rgba(22,58,71,.36),rgba(8,17,34,.82));
}
.progression-intro-card { grid-template-columns:39px minmax(0,1fr); }
.progression-intro-card>span { width:39px;height:39px;display:grid;place-items:center;border-radius:13px;color:#8fe7dc;background:rgba(52,166,164,.13); }
.progression-intro-card svg { width:24px;height:24px; }
.progression-intro-card strong { display:block;font-size:.69rem; }
.progression-intro-card p { margin:4px 0 0;color:#8599ae;font-size:.55rem;line-height:1.45; }
.progression-section { margin:0 0 22px; }
.progression-section-head { margin-bottom:10px;display:flex;align-items:flex-end;justify-content:space-between;gap:10px; }
.progression-section-head>div { min-width:0; }
.progression-section-head .section-kicker { margin:0 0 4px; }
.progression-section-head h2 { margin:0;font-size:.95rem; }
.progression-section-head p:not(.section-kicker) { margin:4px 0 0;color:#7f8aa9;font-size:.54rem;line-height:1.4; }
.progression-section-head>span { flex:0 0 auto;min-width:38px;padding:6px 8px;border:1px solid rgba(131,146,205,.16);border-radius:999px;color:#aab4d0;background:rgba(255,255,255,.025);font-size:.52rem;font-weight:850;text-align:center; }
.mission-list { display:grid;gap:9px; }
.mission-card {
  position:relative;min-width:0;padding:12px;display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;overflow:hidden;
  border:1px solid rgba(128,145,207,.16);border-radius:20px;background:radial-gradient(circle at 93% 4%,color-mix(in srgb,var(--progress-color) 10%,transparent),transparent 32%),linear-gradient(145deg,rgba(17,24,54,.96),rgba(7,12,29,.99));box-shadow:inset 0 1px rgba(255,255,255,.025);
}
.mission-card.is-claimable { border-color:color-mix(in srgb,var(--progress-color) 47%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--progress-color) 10%,transparent),0 12px 32px color-mix(in srgb,var(--progress-color) 8%,transparent); }
.mission-card.is-claimed { opacity:.78; }
.mission-icon { width:42px;height:42px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--progress-color) 22%,transparent);border-radius:14px;color:var(--progress-color);background:color-mix(in srgb,var(--progress-color) 11%,transparent);box-shadow:inset 0 1px rgba(255,255,255,.04); }
.mission-icon svg { width:25px;height:25px; }
.mission-copy { min-width:0; }
.mission-title-row { display:flex;align-items:flex-start;justify-content:space-between;gap:8px; }
.mission-title-row>div { min-width:0; }
.mission-title-row small { display:block;color:#737f9f;font-size:.41rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase; }
.mission-title-row h3 { margin:2px 0 0;font-size:.7rem;line-height:1.2; }
.mission-title-row>span { flex:0 0 auto;padding:4px 6px;border:1px solid color-mix(in srgb,var(--progress-color) 27%,transparent);border-radius:999px;color:color-mix(in srgb,var(--progress-color) 82%,white);background:color-mix(in srgb,var(--progress-color) 9%,transparent);font-size:.43rem;font-weight:900; }
.mission-copy>p { margin:5px 0 8px;color:#8691b0;font-size:.53rem;line-height:1.4; }
.progression-bar { height:6px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.055);box-shadow:inset 0 1px 2px rgba(0,0,0,.25); }
.progression-bar i { display:block;width:var(--progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--progress-color) 75%,#6758ff),var(--progress-color));box-shadow:0 0 10px color-mix(in srgb,var(--progress-color) 43%,transparent);transition:width .25s ease; }
.progression-bar.compact { height:5px; }
.mission-progress-label { margin-top:5px;display:flex;align-items:center;justify-content:space-between;gap:8px; }
.mission-progress-label strong { color:#dce1f6;font-size:.48rem; }.mission-progress-label small { color:#74809f;font-size:.44rem; }
.mission-claim-form { grid-column:1/-1; }
.mission-claim-button { width:100%;min-height:38px;padding:8px 11px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid color-mix(in srgb,var(--progress-color) 42%,transparent);border-radius:13px;color:#f3f6ff;background:linear-gradient(110deg,color-mix(in srgb,var(--progress-color) 27%,#4234a8),color-mix(in srgb,var(--progress-color) 18%,#1f4c87));font:inherit;font-size:.57rem;font-weight:900;box-shadow:inset 0 1px rgba(255,255,255,.08),0 8px 20px color-mix(in srgb,var(--progress-color) 13%,transparent); }
.mission-claim-button svg { width:18px;height:18px; }
.mission-complete-mark { grid-column:1/-1;width:max-content;max-width:100%;padding:5px 8px;display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(101,216,176,.19);border-radius:999px;color:#8ddbbc;background:rgba(45,137,105,.1);font-size:.47rem;font-weight:800; }
.mission-complete-mark .icon { width:14px;height:14px; }

.achievement-overview { grid-template-columns:82px minmax(0,1fr);border-color:rgba(145,126,255,.18);background:radial-gradient(circle at 8% 50%,rgba(121,85,239,.17),transparent 34%),linear-gradient(145deg,rgba(22,27,65,.91),rgba(8,13,31,.96)); }
.achievement-ring { --ring-color:#8c79ff;width:76px;height:76px;display:grid;place-items:center;border-radius:50%;background:conic-gradient(var(--ring-color) var(--progress),rgba(255,255,255,.06) 0);box-shadow:0 0 24px rgba(118,92,235,.16); }
.achievement-ring::before { content:"";grid-area:1/1;width:62px;height:62px;border-radius:50%;background:#0c122d;box-shadow:inset 0 1px rgba(255,255,255,.04); }
.achievement-ring span { grid-area:1/1;position:relative;z-index:1;text-align:center; }.achievement-ring strong,.achievement-ring small { display:block; }.achievement-ring strong { font-size:.92rem; }.achievement-ring small { margin-top:1px;color:#7e89a9;font-size:.4rem; }
.achievement-overview .section-kicker { margin:0 0 4px; }.achievement-overview h2 { margin:0;font-size:.85rem; }.achievement-overview p:not(.section-kicker) { margin:5px 0 0;color:#8490af;font-size:.53rem;line-height:1.45; }
.achievement-section { min-width:0; }
.achievement-grid { display:grid;grid-template-columns:minmax(0,1fr);gap:9px; }
.achievement-card {
  position:relative;min-width:0;padding:12px;display:grid;grid-template-columns:48px minmax(0,1fr);gap:11px;overflow:hidden;border:1px solid rgba(130,145,205,.15);border-radius:20px;
  background:radial-gradient(circle at 92% 8%,color-mix(in srgb,var(--progress-color) 10%,transparent),transparent 33%),linear-gradient(145deg,rgba(17,24,54,.96),rgba(7,12,29,.99));box-shadow:inset 0 1px rgba(255,255,255,.027);
}
.achievement-card.is-claimable { border-color:color-mix(in srgb,var(--progress-color) 45%,transparent); }
.achievement-card.is-claimed { border-color:color-mix(in srgb,var(--progress-color) 29%,transparent); }
.achievement-card.is-active .achievement-medallion { filter:grayscale(.38);opacity:.7; }
.achievement-medallion { position:relative;width:48px;height:52px;display:grid;place-items:center;color:var(--progress-color); }
.achievement-medallion i { position:absolute;inset:0 2px 4px;clip-path:polygon(50% 0,88% 19%,100% 58%,74% 100%,26% 100%,0 58%,12% 19%);border:1px solid color-mix(in srgb,var(--progress-color) 35%,transparent);background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--progress-color) 29%,white),color-mix(in srgb,var(--progress-color) 12%,#111632) 54%,rgba(8,12,29,.8));box-shadow:0 9px 20px color-mix(in srgb,var(--progress-color) 11%,transparent); }
.achievement-medallion svg { position:relative;z-index:1;width:26px;height:26px;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--progress-color) 30%,transparent)); }
.achievement-copy { min-width:0; }
.achievement-title-row { display:flex;align-items:center;justify-content:space-between;gap:8px; }
.achievement-title-row small { color:var(--progress-color);font-size:.4rem;font-weight:900;letter-spacing:.1em; }.achievement-title-row span { color:#a5afcc;font-size:.43rem;font-weight:850; }
.achievement-copy h3 { margin:3px 0 0;font-size:.71rem; }.achievement-copy>p { margin:5px 0 8px;color:#838eae;font-size:.52rem;line-height:1.42; }
.achievement-card .mission-claim-form,.achievement-card .mission-complete-mark { grid-column:1/-1; }
.progression-install-note { display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:center; }.progression-install-note>svg { width:42px;height:42px;color:#a999ff; }.progression-install-note h2 { margin:0;font-size:.85rem; }.progression-install-note p { margin:5px 0 0;color:#8e98b7;font-size:.58rem;line-height:1.45; }

@media (min-width:600px) {
  .achievement-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:350px) {
  .progression-hero { padding:14px;gap:11px; }
  .progression-hero-copy h1 { font-size:1.15rem; }
  .progression-level-card { min-width:70px;padding-inline:7px; }
  .progression-hero-stats small { font-size:.38rem; }
  .mission-card,.achievement-card { padding:10px;grid-template-columns:38px minmax(0,1fr);gap:8px; }
  .mission-icon { width:38px;height:38px; }.mission-icon svg { width:22px;height:22px; }
  .achievement-medallion { width:38px;height:43px; }.achievement-medallion svg { width:22px;height:22px; }
  .profile-progression-button { grid-template-columns:42px minmax(0,1fr) 18px; }
  .profile-progression-icon { width:42px;height:42px; }
  .profile-progression-badge { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  .progression-bar i,.progression-level-track i { transition:none; }
}

/* V51 — profil équilibré, administration utilisateur fiable et menu corrigé. */
.profile-about-progression-stack {
  margin: 0 0 22px;
  display: grid;
  gap: 16px;
}
.profile-about-progression-stack > * { min-width: 0; margin: 0; }
.profile-about-card h2 { margin-block-start: 0; }
.profile-about-card .tech { margin-block-end: 0; }
.profile-progression-launch { margin: 0; }

/* Une icône de menu doit toujours occuper la colonne de 28 px, quelle que soit sa famille SVG. */
.sheet-links > a > svg:first-child,
.sheet-link > svg:first-child,
.sheet-links > a > .gamification-icon:first-child,
.sheet-link > .gamification-icon:first-child {
  width: 22px;
  height: 22px;
  max-width: 22px;
  max-height: 22px;
  justify-self: center;
  align-self: center;
  overflow: visible;
  flex: 0 0 22px;
}
.sheet-links > a > svg:last-child,
.sheet-link > svg:last-child {
  width: 17px;
  height: 17px;
  justify-self: end;
}

.admin-users-list { margin-block-start: 12px; }
.admin-user-card { scroll-margin-block-start: calc(var(--topbar-height) + 12px); }
.admin-user-panel { gap: 10px; }
.admin-user-identity {
  min-width: 0;
  padding: 10px 11px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border: 1px solid rgba(155,169,225,.11);
  border-radius: 13px;
  background: rgba(255,255,255,.022);
}
.admin-user-identity > div { min-width: 0; display: grid; gap: 2px; }
.admin-user-identity small { color: var(--muted-2); font-size: .55rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.admin-user-identity strong { overflow: hidden; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-status-pill {
  flex: 0 0 auto;
  min-height: 25px;
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: #cbd2ed;
  background: rgba(255,255,255,.04);
  font-size: .55rem;
  font-weight: 850;
}
.admin-status-pill.is-active { border-color: rgba(88,223,176,.25); color: #b8f5dc; background: rgba(88,223,176,.09); }
.admin-status-pill.is-pending { border-color: rgba(118,193,255,.25); color: #c4e7ff; background: rgba(118,193,255,.08); }
.admin-status-pill.is-suspended { border-color: rgba(255,198,109,.27); color: #ffe0a8; background: rgba(255,198,109,.09); }
.admin-status-pill.is-banned { border-color: rgba(255,113,136,.3); color: #ffc1cc; background: rgba(255,113,136,.1); }

.admin-user-form { gap: 10px; }
.admin-user-form .admin-user-section {
  padding: 12px;
  border-radius: 15px;
  background: linear-gradient(145deg,rgba(255,255,255,.026),rgba(255,255,255,.012));
}
.admin-section-head {
  margin-block-end: 10px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
.admin-section-head > div { min-width: 0; }
.admin-user-form .admin-section-head h3 { margin: 0; font-size: .78rem; }
.admin-section-head small { display: block; margin-top: 3px; color: var(--muted); font-size: .58rem; line-height: 1.35; }
.admin-form-state {
  flex: 0 0 auto;
  min-height: 23px;
  padding: 4px 7px;
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(88,223,176,.18);
  border-radius: 999px;
  color: #a9e9cf;
  background: rgba(88,223,176,.07);
  font-size: .51rem;
  font-weight: 850;
}
.admin-form-state.is-dirty { border-color: rgba(255,198,109,.28); color: #ffdaa0; background: rgba(255,198,109,.09); }
.admin-form-state.is-saving { border-color: rgba(118,193,255,.28); color: #c1e7ff; background: rgba(118,193,255,.09); }
.admin-progress-grid {
  display: grid;
  grid-template-columns: minmax(0,.78fr) minmax(0,1.22fr);
  gap: 8px;
}
.admin-user-form label { gap: 5px; }
.admin-user-form input,
.admin-user-form select { min-height: 46px; }
.admin-save-button { margin-top: 3px; min-height: 46px; }
.admin-save-button .icon { width: 18px; height: 18px; }

.admin-current-assignments {
  margin-bottom: 9px;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.admin-current-assignments > div {
  min-width: 0;
  padding: 9px;
  display: grid;
  gap: 3px;
  border: 1px solid rgba(151,165,220,.1);
  border-radius: 12px;
  background: rgba(255,255,255,.018);
}
.admin-current-assignments small { color: var(--muted-2); font-size: .49rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.admin-current-assignments strong { overflow: hidden; color: #d8ddf2; font-size: .61rem; line-height: 1.35; text-overflow: ellipsis; }
.admin-assignment-actions {
  margin: 7px 0 10px;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
}
.admin-assignment-actions .button,
.account-state-actions .button { min-height: 42px; gap: 6px; }
.admin-assignment-actions .icon,
.account-state-actions .icon { width: 16px; height: 16px; }
.admin-account-section { border-color: rgba(255,178,116,.13) !important; }
.admin-account-section .account-state-actions { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
.admin-account-section .admin-force-logout { grid-column: 1 / -1; }

@media (max-width: 350px) {
  .profile-about-progression-stack { gap: 13px; }
  .admin-progress-grid,
  .admin-current-assignments { grid-template-columns: 1fr; }
  .admin-section-head { align-items: center; }
}
.admin-progress-section { border-color: rgba(126,114,255,.16) !important; }

/* V52 — administration premium, succès publics et emblèmes colorés. */

/* Profil : aperçu public de la collection sans charger le tableau de bord complet. */
.profile-progression-button.is-public {
  border-color: rgba(91, 211, 223, .22);
  background:
    radial-gradient(circle at 88% 10%, rgba(70, 201, 222, .18), transparent 35%),
    radial-gradient(circle at 7% 100%, rgba(111, 91, 242, .13), transparent 34%),
    linear-gradient(145deg, rgba(18, 36, 69, .97), rgba(7, 13, 31, .99));
}
.profile-progression-button.is-public .profile-progression-icon {
  color: #9cf2e8;
  border-color: rgba(109, 228, 219, .22);
  background: linear-gradient(145deg, rgba(58, 192, 190, .24), rgba(76, 92, 217, .13));
}
.profile-achievement-preview {
  margin-top: 7px !important;
  display: flex !important;
  gap: 4px;
  overflow: visible !important;
  white-space: normal !important;
}
.profile-achievement-preview i {
  width: 23px;
  height: 23px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 8px;
  color: #d8e0ff;
  background: rgba(255,255,255,.045);
  box-shadow: inset 0 1px rgba(255,255,255,.055);
}
.profile-achievement-preview i.tier-bronze { color:#ffc083;background:rgba(214,126,56,.12); }
.profile-achievement-preview i.tier-silver { color:#dbe7ff;background:rgba(153,178,231,.12); }
.profile-achievement-preview i.tier-gold { color:#ffe481;background:rgba(226,175,44,.13); }
.profile-achievement-preview i.tier-platinum { color:#9df3ff;background:rgba(67,193,220,.13); }
.profile-achievement-preview i.tier-cosmic { color:#d1b5ff;background:rgba(136,90,238,.15); }
.profile-achievement-preview svg { width: 14px; height: 14px; }

/* Emblèmes de succès : couleurs franches, forme optique stable, aucun gris plat. */
.achievement-emblem {
  --tier-main: var(--progress-color, #8ba8ff);
  --tier-soft: color-mix(in srgb, var(--tier-main) 30%, transparent);
  position: relative;
  width: 52px;
  height: 56px;
  display: grid;
  place-items: center;
  color: #f7f9ff;
  isolation: isolate;
}
.achievement-card.tier-bronze .achievement-emblem { --tier-main:#ffad64; }
.achievement-card.tier-silver .achievement-emblem { --tier-main:#c8d9ff; }
.achievement-card.tier-gold .achievement-emblem { --tier-main:#ffd65e; }
.achievement-card.tier-platinum .achievement-emblem { --tier-main:#76ebf6; }
.achievement-card.tier-cosmic .achievement-emblem { --tier-main:#b493ff; }
.achievement-emblem-halo {
  position: absolute;
  inset: 4px 0 0;
  border-radius: 17px 17px 20px 20px;
  background:
    radial-gradient(circle at 35% 20%, rgba(255,255,255,.28), transparent 25%),
    linear-gradient(150deg, color-mix(in srgb,var(--tier-main) 40%,#25305b), color-mix(in srgb,var(--tier-main) 15%,#070c20));
  border: 1px solid color-mix(in srgb,var(--tier-main) 54%,transparent);
  box-shadow:
    0 8px 20px color-mix(in srgb,var(--tier-main) 15%,transparent),
    inset 0 1px rgba(255,255,255,.18),
    inset 0 -10px 22px rgba(1,5,20,.28);
  clip-path: polygon(50% 0, 88% 13%, 100% 44%, 91% 77%, 50% 100%, 9% 77%, 0 44%, 12% 13%);
}
.achievement-emblem-core {
  position: relative;
  z-index: 2;
  width: 35px;
  height: 35px;
  display: grid;
  place-items: center;
  border: 1px solid color-mix(in srgb,var(--tier-main) 63%,rgba(255,255,255,.35));
  border-radius: 50%;
  color: color-mix(in srgb,var(--tier-main) 72%,white);
  background:
    radial-gradient(circle at 34% 25%, rgba(255,255,255,.22), transparent 32%),
    rgba(6,10,30,.58);
  box-shadow: inset 0 1px rgba(255,255,255,.12), 0 0 16px color-mix(in srgb,var(--tier-main) 22%,transparent);
}
.achievement-emblem-core svg { width: 22px; height: 22px; filter: drop-shadow(0 0 5px color-mix(in srgb,var(--tier-main) 48%,transparent)); }
.achievement-emblem > i,
.achievement-emblem > b {
  position: absolute;
  z-index: 3;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 7px color-mix(in srgb,var(--tier-main) 80%,white);
}
.achievement-emblem > i { top: 10px; right: 9px; }
.achievement-emblem > b { bottom: 10px; left: 8px; width: 2px; height: 2px; }
.achievement-card.is-active .achievement-emblem { opacity: .76; }
.achievement-card.is-active .achievement-emblem-halo { filter: saturate(.72) brightness(.8); }
.achievement-card.is-claimable .achievement-emblem,
.achievement-card.is-claimed .achievement-emblem { opacity: 1; }
.achievement-card.is-claimable .achievement-emblem-halo { animation: achievementPulse 2.8s ease-in-out infinite; }
@keyframes achievementPulse {
  50% { box-shadow: 0 8px 24px color-mix(in srgb,var(--tier-main) 25%,transparent), inset 0 1px rgba(255,255,255,.2), inset 0 -10px 22px rgba(1,5,20,.25); }
}

/* Page publique des succès. */
.public-achievements-hero {
  position: relative;
  margin-bottom: 15px;
  padding: 16px;
  display: grid;
  grid-template-columns: 52px minmax(0,1fr) auto;
  gap: 12px;
  align-items: center;
  overflow: hidden;
  border: 1px solid rgba(130, 112, 255, .23);
  border-radius: 25px;
  background:
    radial-gradient(circle at 92% 10%, rgba(116, 80, 240, .24), transparent 34%),
    radial-gradient(circle at 7% 96%, rgba(43, 190, 202, .13), transparent 33%),
    linear-gradient(150deg, rgba(22, 29, 74, .98), rgba(6, 11, 29, .99));
  box-shadow: 0 18px 42px rgba(8, 6, 45, .26), inset 0 1px rgba(255,255,255,.04);
}
.public-achievements-hero > *:not(.public-achievements-orbit) { position: relative; z-index: 2; }
.public-achievements-hero .progression-back { grid-column: 1 / -1; }
.public-achievements-orbit { position:absolute;right:-54px;top:-66px;width:180px;height:180px;border:1px solid rgba(149,139,255,.15);border-radius:50%; }
.public-achievements-orbit::before { content:"";position:absolute;inset:30px;border:1px solid rgba(86,220,219,.11);border-radius:50%; }
.public-achievements-orbit i,.public-achievements-orbit b { position:absolute;border-radius:50%;background:#7df0db;box-shadow:0 0 14px rgba(125,240,219,.75); }
.public-achievements-orbit i { left:20px;bottom:47px;width:7px;height:7px; }
.public-achievements-orbit b { right:45px;bottom:17px;width:3px;height:3px;background:#fff; }
.public-achievements-avatar { position:relative;width:52px;height:52px; }
.public-achievements-avatar img { width:100%;height:100%;object-fit:cover;border:1px solid rgba(155,143,255,.34);border-radius:16px;background:#101735; }
.public-achievements-avatar span { position:absolute;right:-5px;bottom:-5px;min-width:22px;height:22px;padding:0 5px;display:grid;place-items:center;border:2px solid #0d1230;border-radius:999px;color:#fff;background:linear-gradient(135deg,#7f69ff,#4e6ff0);font-size:.49rem;font-weight:900; }
.public-achievements-copy { min-width:0; }
.public-achievements-copy .section-kicker { margin:0 0 4px; }
.public-achievements-copy h1 { margin:0;font-size:1rem;line-height:1.1; }
.public-achievements-copy p:not(.section-kicker) { margin:5px 0 0;color:#8e9aba;font-size:.54rem;line-height:1.4; }
.public-achievements-score { min-width:50px;padding:8px 7px;border:1px solid rgba(160,148,255,.18);border-radius:15px;background:rgba(6,10,29,.52);text-align:center; }
.public-achievements-score strong,.public-achievements-score small { display:block; }
.public-achievements-score strong { font-size:.9rem; }
.public-achievements-score small { margin-top:1px;color:#8792b1;font-size:.42rem; }
.public-achievements-progress { grid-column:1/-1;height:6px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.055); }
.public-achievements-progress i { display:block;width:var(--progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,#7a67ff,#51d5d0);box-shadow:0 0 11px rgba(91,166,255,.42); }
.public-achievements-summary { margin-bottom:18px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px; }
.public-achievements-summary span { min-width:0;padding:8px 3px;display:grid;place-items:center;gap:2px;border:1px solid rgba(130,145,205,.11);border-radius:12px;background:rgba(255,255,255,.018);text-align:center; }
.public-achievements-summary i { width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor; }
.public-achievements-summary strong { font-size:.66rem; }
.public-achievements-summary small { overflow:hidden;color:#7d88a8;font-size:.37rem;text-overflow:ellipsis;white-space:nowrap; }
.public-achievements-summary .tier-bronze { color:#ffad64; }.public-achievements-summary .tier-silver { color:#c8d9ff; }.public-achievements-summary .tier-gold { color:#ffd65e; }.public-achievements-summary .tier-platinum { color:#76ebf6; }.public-achievements-summary .tier-cosmic { color:#b493ff; }
.public-achievement-card { align-items:center; }
.public-achievement-earned { margin-top:8px;width:max-content;display:inline-flex;align-items:center;gap:5px;color:#8ee3bd;font-size:.46rem;font-weight:850; }
.public-achievement-earned svg { width:14px;height:14px; }
.public-achievements-empty { min-height:250px; }
.public-achievements-empty-icon { width:58px;height:58px;display:grid;place-items:center;border:1px solid rgba(140,124,255,.2);border-radius:20px;color:#c7baff;background:rgba(111,83,224,.12); }
.public-achievements-empty-icon svg { width:34px;height:34px; }

/* Gestion utilisateurs : hiérarchie visuelle et actions sans ambiguïté. */
.admin-users-head { align-items:flex-end; }
.admin-users-total { min-width:68px;padding:8px 9px;display:grid;place-items:center;border:1px solid rgba(130,145,205,.14);border-radius:14px;background:rgba(255,255,255,.022);text-align:center; }
.admin-users-total strong,.admin-users-total small { display:block; }.admin-users-total strong { font-size:.82rem; }.admin-users-total small { color:#7d88a7;font-size:.4rem;text-transform:uppercase;letter-spacing:.07em; }
.admin-user-search { position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) auto auto;align-items:center;gap:7px; }
.admin-user-search > .icon { width:19px;height:19px;color:#8e9abc; }
.admin-user-search input { min-width:0;border:0!important;background:transparent!important;padding-inline:0!important;box-shadow:none!important; }
.admin-user-search .button { min-height:38px;padding-inline:11px; }
.admin-search-reset { width:28px;height:28px;display:grid;place-items:center;border-radius:9px;color:#919cbc;background:rgba(255,255,255,.045); }
.admin-search-reset svg { width:15px;height:15px; }
.admin-user-card > summary { grid-template-columns:42px minmax(0,1fr) auto 17px;gap:9px; }
.admin-user-summary-copy { min-width:0;display:grid;gap:1px; }
.admin-user-summary-copy .presence { margin-top:1px; }
.admin-user-card > summary > .admin-status-pill { min-height:22px;padding:3px 6px;font-size:.45rem; }
.admin-profile-link { flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;color:#aebdff;font-size:.52rem;font-weight:800; }
.admin-profile-link svg { width:14px;height:14px; }
.admin-user-meta span { display:inline-flex;align-items:center;gap:4px; }
.admin-user-meta svg { width:12px;height:12px; }
.admin-user-form .admin-user-section { padding:13px; }
.admin-section-head { display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center; }
.admin-section-symbol { width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(150,132,255,.22);border-radius:12px;color:#cfc6ff;background:rgba(111,82,225,.12); }
.admin-section-symbol.is-blue { color:#a9e4ff;border-color:rgba(91,190,235,.2);background:rgba(52,146,201,.11); }
.admin-section-symbol.is-warning { color:#ffd79a;border-color:rgba(255,192,91,.2);background:rgba(182,118,37,.1); }
.admin-section-symbol svg { width:21px;height:21px; }
.admin-progress-overview { margin-bottom:9px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px; }
.admin-progress-overview span { min-width:0;padding:9px;border:1px solid rgba(145,158,215,.1);border-radius:12px;background:rgba(255,255,255,.018); }
.admin-progress-overview small,.admin-progress-overview strong { display:block; }.admin-progress-overview small { color:#7783a4;font-size:.43rem;text-transform:uppercase;letter-spacing:.06em; }.admin-progress-overview strong { margin-top:3px;font-size:.7rem; }
.admin-input-shell { position:relative;display:block; }
.admin-input-shell input { padding-right:42px!important; }
.admin-input-shell > span { position:absolute;right:13px;top:50%;transform:translateY(-50%);color:#7c88a9;font-size:.48rem;font-weight:850;pointer-events:none; }
.admin-xp-shortcuts { margin-top:2px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px; }
.admin-xp-shortcuts button { min-height:31px;padding:5px;border:1px solid rgba(135,149,209,.13);border-radius:10px;color:#a9b4d2;background:rgba(255,255,255,.025);font:inherit;font-size:.46rem;font-weight:850; }
.admin-xp-shortcuts button:active { transform:translateY(1px);background:rgba(123,105,255,.1); }
.admin-progress-grid { align-items:end;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr); }
.admin-auto-level { min-height:46px;padding:7px 9px;display:grid;grid-template-columns:24px minmax(0,1fr);gap:7px;align-items:center;border:1px solid rgba(112,200,239,.16);border-radius:13px;color:#c6eaff;background:linear-gradient(145deg,rgba(40,115,164,.13),rgba(83,75,190,.09));font:inherit;text-align:left; }
.admin-auto-level svg { width:22px;height:22px;color:#83ddff; }.admin-auto-level span,.admin-auto-level strong,.admin-auto-level small { min-width:0;display:block; }.admin-auto-level strong { font-size:.52rem; }.admin-auto-level small { margin-top:2px;color:#7e8caa;font-size:.4rem;line-height:1.25; }
.admin-save-button:disabled { opacity:.45;cursor:not-allowed;box-shadow:none; }
.admin-access-section { border-color:rgba(72,170,222,.12)!important; }
.admin-assignment-block { margin-top:9px;padding:10px;border:1px solid rgba(145,158,215,.1);border-radius:13px;background:rgba(255,255,255,.015); }
.admin-assignment-copy { margin-bottom:7px; }.admin-assignment-copy strong,.admin-assignment-copy small { display:block; }.admin-assignment-copy strong { font-size:.62rem; }.admin-assignment-copy small { margin-top:2px;color:#7b87a6;font-size:.48rem;line-height:1.35; }
.admin-assignment-block select { min-height:42px; }
.admin-assignment-actions { margin:7px 0 0; }
.admin-assignment-actions button:disabled { opacity:.38;cursor:not-allowed; }
.admin-account-section { padding:0!important;overflow:hidden; }
.admin-account-section > summary::-webkit-details-marker { display:none; }
.admin-account-summary { padding:12px;display:grid;grid-template-columns:36px minmax(0,1fr) auto 16px;gap:9px;align-items:center;cursor:pointer;list-style:none; }
.admin-account-summary > span:nth-child(2) { min-width:0; }.admin-account-summary strong,.admin-account-summary small { display:block; }.admin-account-summary strong { font-size:.69rem; }.admin-account-summary small { margin-top:3px;color:#7f8aa9;font-size:.49rem;line-height:1.35; }
.admin-account-summary > .icon { width:16px;height:16px;color:#8994b5;transition:transform .16s ease; }.admin-account-section[open] .admin-account-summary > .icon { transform:rotate(90deg); }
.admin-account-panel { padding:0 12px 12px;border-top:1px solid rgba(144,157,215,.09); }
.admin-account-panel > label { margin-top:11px; }
.admin-account-panel textarea { min-height:80px;resize:vertical; }
.admin-note-hint { margin:8px 0 10px;display:flex;align-items:flex-start;gap:6px;color:#7f8baa;font-size:.45rem;line-height:1.4; }.admin-note-hint svg { flex:0 0 14px;width:14px;height:14px;color:#9eabcc; }

@media (max-width: 360px) {
  .admin-user-search { grid-template-columns:18px minmax(0,1fr) auto; }
  .admin-user-search .button { grid-column:1/-1;width:100%; }
  .admin-search-reset { grid-column:3;grid-row:1; }
  .admin-user-card > summary { grid-template-columns:38px minmax(0,1fr) 15px; }
  .admin-user-card > summary > .admin-status-pill { display:none; }
  .admin-section-head { grid-template-columns:32px minmax(0,1fr); }
  .admin-section-head > .admin-form-state { grid-column:1/-1;width:max-content;justify-self:end; }
  .admin-section-symbol { width:32px;height:32px; }.admin-section-symbol svg { width:19px;height:19px; }
  .admin-progress-grid { grid-template-columns:1fr; }
  .public-achievements-hero { grid-template-columns:46px minmax(0,1fr);padding:14px; }
  .public-achievements-score { grid-column:1/-1;display:flex;justify-content:center;align-items:baseline;gap:3px; }
  .public-achievements-summary { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width: 350px) {
  .achievement-emblem { width:40px;height:45px; }
  .achievement-emblem-core { width:29px;height:29px; }
  .achievement-emblem-core svg { width:18px;height:18px; }
}

@media (prefers-reduced-motion: reduce) {
  .achievement-card.is-claimable .achievement-emblem-halo { animation:none; }
}
.admin-xp-field { min-width: 0; }
.public-achievements-list { min-width: 0; }
.public-achievement-grid { min-width: 0; }

/* V53 · Accès administrateur pendant la maintenance */
.maintenance-page { gap: 0; }
.maintenance-page .button { min-width: min(100%, 250px); justify-content: center; }
.maintenance-page .auth-link { margin-block-start: 14px; }
.maintenance-access-note {
  width: min(100%, 360px);
  margin: 0 0 18px;
  padding: 13px 15px;
  display: grid;
  gap: 4px;
  border: 1px solid rgba(109,224,194,.24);
  border-radius: 15px;
  background: rgba(45,113,113,.12);
  color: #d8fff4;
}
.maintenance-access-note strong { font-size: .88rem; }
.maintenance-access-note small { color: #9cb8b7; line-height: 1.45; }

/* V54 · Localisation approximative sans validation native du champ ville */

/* V56 · Célébration céleste persistante jusqu’au bouton Continuer */
.mission-claim-button.is-launching {
  position: relative;
  overflow: hidden;
  cursor: wait;
  transform: translateZ(0) scale(.985);
  filter: saturate(1.2) brightness(1.08);
}
.mission-claim-button.is-launching::after {
  content: "";
  position: absolute;
  inset: -55% -20%;
  background: linear-gradient(105deg,transparent 34%,rgba(255,255,255,.42) 49%,transparent 64%);
  transform: translate3d(-70%,0,0);
  animation: xpButtonLaunch .72s ease-out both;
}
.mission-claim-button.is-launching svg { animation: xpButtonIconLaunch .65s ease-out both; }

body.xp-celebration-open { overflow: hidden; overscroll-behavior: none; touch-action: none; }
.xp-celebration[hidden] { display: none !important; }
.xp-celebration {
  --xp-accent: #8f83ff;
  position: fixed;
  z-index: 620;
  inset: 0;
  min-height: 100dvh;
  padding: max(24px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));
  display: grid;
  grid-template-rows: auto auto auto;
  place-items: center;
  align-content: center;
  gap: 12px;
  overflow: hidden;
  isolation: isolate;
  contain: layout paint style;
  color: #f7f8ff;
  background:
    radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--xp-accent) 22%,transparent),transparent 27%),
    radial-gradient(circle at 14% 18%,rgba(63,124,255,.14),transparent 31%),
    radial-gradient(circle at 86% 76%,rgba(80,226,213,.1),transparent 28%),
    linear-gradient(180deg,rgba(4,7,22,.985),rgba(3,6,18,.995));
  opacity: 0;
  pointer-events: none;
  transform: translateZ(0);
}
.xp-celebration::before,
.xp-celebration::after {
  content: "";
  position: absolute;
  z-index: -1;
  pointer-events: none;
  border-radius: 50%;
}
.xp-celebration::before {
  width: min(120vw,720px);
  aspect-ratio: 1;
  background: conic-gradient(from 30deg,transparent 0 15%,color-mix(in srgb,var(--xp-accent) 13%,transparent) 24%,transparent 35% 57%,rgba(74,224,217,.09) 68%,transparent 80%);
  filter: blur(2px);
  opacity: .15;
  transform: scale(.45) rotate(-35deg);
}
.xp-celebration::after {
  width: 120px;
  height: 120px;
  background: color-mix(in srgb,var(--xp-accent) 24%,transparent);
  box-shadow: 0 0 100px 45px color-mix(in srgb,var(--xp-accent) 15%,transparent);
  opacity: 0;
}
.xp-celebration.is-visible {
  opacity: 1;
  pointer-events: auto;
  animation: xpBackdropArrive .34s ease-out both;
}
.xp-celebration.is-visible::before { animation: xpNebulaBloom 2.8s cubic-bezier(.18,.82,.24,1) both; }
.xp-celebration.is-visible::after { animation: xpCoreFlash 1.35s .28s ease-out both; }
.xp-celebration.is-leaving {
  pointer-events: none;
  animation: xpBackdropLeave .38s ease-in both;
}

.xp-celebration-sky { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.xp-celebration-sky::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .72;
  background-image:
    radial-gradient(circle at 12% 22%,#fff 0 1px,transparent 1.4px),
    radial-gradient(circle at 76% 18%,#b9d9ff 0 1px,transparent 1.5px),
    radial-gradient(circle at 41% 71%,#fff 0 1px,transparent 1.4px),
    radial-gradient(circle at 89% 66%,#8ee8db 0 1px,transparent 1.5px),
    radial-gradient(circle at 20% 83%,#d5cbff 0 1px,transparent 1.6px);
  background-size: 173px 137px,211px 159px,149px 193px,257px 181px,193px 223px;
  transform: scale(1.08);
}
.xp-celebration-sky > i {
  --star-size: 3px;
  --star-x: 50%;
  --star-y: 50%;
  --star-delay: 0s;
  position: absolute;
  left: var(--star-x);
  top: var(--star-y);
  width: var(--star-size);
  height: var(--star-size);
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 12px 2px color-mix(in srgb,var(--xp-accent) 74%,white);
  opacity: 0;
  transform: translate3d(-50%,-50%,0) scale(.1);
}
.xp-celebration-sky > i:nth-child(1){--star-x:10%;--star-y:19%;--star-size:3px;--star-delay:.12s}
.xp-celebration-sky > i:nth-child(2){--star-x:24%;--star-y:34%;--star-size:2px;--star-delay:.4s}
.xp-celebration-sky > i:nth-child(3){--star-x:38%;--star-y:13%;--star-size:4px;--star-delay:.23s}
.xp-celebration-sky > i:nth-child(4){--star-x:57%;--star-y:23%;--star-size:2px;--star-delay:.56s}
.xp-celebration-sky > i:nth-child(5){--star-x:76%;--star-y:11%;--star-size:3px;--star-delay:.32s}
.xp-celebration-sky > i:nth-child(6){--star-x:91%;--star-y:31%;--star-size:4px;--star-delay:.67s}
.xp-celebration-sky > i:nth-child(7){--star-x:84%;--star-y:58%;--star-size:2px;--star-delay:.19s}
.xp-celebration-sky > i:nth-child(8){--star-x:92%;--star-y:81%;--star-size:3px;--star-delay:.49s}
.xp-celebration-sky > i:nth-child(9){--star-x:67%;--star-y:88%;--star-size:4px;--star-delay:.75s}
.xp-celebration-sky > i:nth-child(10){--star-x:45%;--star-y:78%;--star-size:2px;--star-delay:.29s}
.xp-celebration-sky > i:nth-child(11){--star-x:18%;--star-y:72%;--star-size:4px;--star-delay:.61s}
.xp-celebration-sky > i:nth-child(12){--star-x:7%;--star-y:52%;--star-size:2px;--star-delay:.36s}
.xp-celebration.is-visible .xp-celebration-sky > i { animation: xpStarIgnite 2.25s var(--star-delay) cubic-bezier(.18,.75,.24,1) both; }

.xp-celebration-sky > b {
  position: absolute;
  width: 118px;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg,transparent,color-mix(in srgb,var(--xp-accent) 80%,white),#fff);
  box-shadow: 18px 0 18px color-mix(in srgb,var(--xp-accent) 46%,transparent);
  opacity: 0;
  transform-origin: right center;
  transform: rotate(-31deg) translate3d(-120vw,0,0) scaleX(.55);
}
.xp-celebration-sky > b:nth-of-type(1){top:18%;right:8%;animation-delay:.35s}
.xp-celebration-sky > b:nth-of-type(2){top:49%;right:-4%;width:84px;animation-delay:1.05s}
.xp-celebration-sky > b:nth-of-type(3){bottom:17%;right:14%;width:72px;animation-delay:1.55s}
.xp-celebration.is-visible .xp-celebration-sky > b { animation-name: xpCometCross;animation-duration:1.05s;animation-timing-function:cubic-bezier(.16,.82,.26,1);animation-fill-mode:both; }

.xp-celebration-system {
  position: relative;
  width: clamp(190px,58vw,250px);
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  opacity: 0;
  transform: translate3d(0,22px,0) scale(.42);
}
.xp-celebration.is-visible .xp-celebration-system { animation: xpSystemArrive .82s .16s cubic-bezier(.16,1.08,.34,1) both; }
.xp-orbit {
  position: absolute;
  inset: 8%;
  border: 1px solid color-mix(in srgb,var(--xp-accent) 42%,transparent);
  border-radius: 50%;
  transform: rotateX(68deg) rotateZ(-18deg);
  box-shadow: inset 0 0 24px color-mix(in srgb,var(--xp-accent) 5%,transparent);
}
.xp-orbit::before,
.xp-orbit::after {
  content: "";
  position: absolute;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 13px 3px color-mix(in srgb,var(--xp-accent) 68%,transparent);
}
.xp-orbit::before { left: 14%; top: 16%; }
.xp-orbit::after { right: 7%; bottom: 24%; width: 3px;height:3px;background:#8ff1dc; }
.xp-orbit > i {
  position: absolute;
  left: 50%;
  top: -4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: color-mix(in srgb,var(--xp-accent) 72%,white);
  box-shadow: 0 0 15px 4px color-mix(in srgb,var(--xp-accent) 55%,transparent);
}
.xp-orbit-two { inset: 19%;transform:rotateX(67deg) rotateZ(42deg);opacity:.72; }
.xp-orbit-three { inset: 31%;transform:rotateX(69deg) rotateZ(104deg);opacity:.58; }
.xp-celebration.is-visible .xp-orbit-one { animation: xpOrbitSpinOne 3.1s .2s cubic-bezier(.16,.75,.28,1) both; }
.xp-celebration.is-visible .xp-orbit-two { animation: xpOrbitSpinTwo 3.1s .25s cubic-bezier(.16,.75,.28,1) both; }
.xp-celebration.is-visible .xp-orbit-three { animation: xpOrbitSpinThree 3.1s .3s cubic-bezier(.16,.75,.28,1) both; }

.xp-celebration-core {
  position: relative;
  z-index: 3;
  width: clamp(72px,22vw,92px);
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border: 1px solid color-mix(in srgb,var(--xp-accent) 56%,white 5%);
  border-radius: 31% 69% 62% 38% / 47% 43% 57% 53%;
  color: #fff;
  background:
    radial-gradient(circle at 35% 24%,rgba(255,255,255,.28),transparent 24%),
    linear-gradient(145deg,color-mix(in srgb,var(--xp-accent) 72%,#2e2a86),color-mix(in srgb,var(--xp-accent) 28%,#08132e));
  box-shadow:
    inset 0 1px rgba(255,255,255,.25),
    0 0 0 10px color-mix(in srgb,var(--xp-accent) 8%,transparent),
    0 0 38px 12px color-mix(in srgb,var(--xp-accent) 28%,transparent);
  transform: rotate(-8deg);
}
.xp-celebration-core::before {
  content: "";
  position: absolute;
  inset: 8px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: inherit;
}
.xp-celebration-icon { width: 46%;height:46%;stroke-width:1.5;filter:drop-shadow(0 0 8px rgba(255,255,255,.32)); }
.xp-celebration.is-level-up .xp-celebration-core { border-color:#aaf7e8;background:linear-gradient(145deg,#786dff,#2f7acb 54%,#1e8f8b);box-shadow:inset 0 1px rgba(255,255,255,.28),0 0 0 11px rgba(119,112,255,.1),0 0 48px 17px rgba(98,223,207,.3); }

.xp-energy-mote {
  --mote-x: 0px;
  --mote-y: -116px;
  --mote-delay: .65s;
  position: absolute;
  z-index: 4;
  left: calc(50% - 4px);
  top: calc(50% - 4px);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 16px 5px color-mix(in srgb,var(--xp-accent) 58%,transparent);
  opacity: 0;
}
.xp-energy-mote:nth-of-type(5){--mote-x:-94px;--mote-y:-64px;--mote-delay:.68s}
.xp-energy-mote:nth-of-type(6){--mote-x:104px;--mote-y:-42px;--mote-delay:.78s}
.xp-energy-mote:nth-of-type(7){--mote-x:-82px;--mote-y:76px;--mote-delay:.88s}
.xp-energy-mote:nth-of-type(8){--mote-x:86px;--mote-y:84px;--mote-delay:.98s}
.xp-energy-mote:nth-of-type(9){--mote-x:4px;--mote-y:116px;--mote-delay:1.08s}
.xp-celebration.is-visible .xp-energy-mote { animation: xpEnergyRelease 1.45s var(--mote-delay) cubic-bezier(.18,.72,.2,1) both; }

.xp-celebration-copy {
  width: min(100%,420px);
  display: grid;
  justify-items: center;
  text-align: center;
  opacity: 0;
  transform: translate3d(0,18px,0);
}
.xp-celebration.is-visible .xp-celebration-copy { animation: xpCopyArrive .56s .66s ease-out both; }
.xp-celebration-copy > p {
  margin: 0 0 4px;
  color: color-mix(in srgb,var(--xp-accent) 57%,white);
  font-size: clamp(.62rem,2.7vw,.78rem);
  font-weight: 900;
  letter-spacing: .22em;
}
.xp-celebration-copy > strong {
  display: flex;
  align-items: baseline;
  justify-content: center;
  min-width: 180px;
  margin: 0;
  font-size: clamp(3rem,16vw,5.35rem);
  line-height: .95;
  letter-spacing: -.07em;
  text-shadow: 0 0 28px color-mix(in srgb,var(--xp-accent) 48%,transparent);
}
.xp-celebration-copy > strong > span:first-child { margin-right:6px;font-size:.55em;letter-spacing:0;color:color-mix(in srgb,var(--xp-accent) 62%,white); }
.xp-celebration-copy > strong small { margin-left:8px;font-size:.25em;letter-spacing:.04em;color:#bfc7e6; }
.xp-celebration-copy h2 { margin:10px 0 0;max-width:360px;font-size:clamp(1rem,5vw,1.36rem);line-height:1.25; }
.xp-level-up,
.xp-constellation-label {
  margin-top: 11px;
  padding: 7px 11px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid color-mix(in srgb,var(--xp-accent) 34%,transparent);
  border-radius: 999px;
  color: #dce4ff;
  background: color-mix(in srgb,var(--xp-accent) 10%,rgba(9,14,35,.72));
  box-shadow: inset 0 1px rgba(255,255,255,.05);
  font-size: .66rem;
  font-weight: 800;
}
.xp-level-up { border-color:rgba(122,239,213,.35);color:#cffff4;background:rgba(52,155,139,.13); }
.xp-level-up svg,.xp-constellation-label svg { width:17px;height:17px; }
.xp-level-up svg { animation: xpRocketFloat 1.1s .9s ease-in-out 2; }

.xp-celebration-close {
  min-width: 152px;
  min-height: 42px;
  padding: 9px 18px;
  border: 1px solid color-mix(in srgb,var(--xp-accent) 36%,transparent);
  border-radius: 999px;
  color: #f5f6ff;
  background: linear-gradient(110deg,color-mix(in srgb,var(--xp-accent) 34%,#24205f),color-mix(in srgb,var(--xp-accent) 18%,#10294e));
  box-shadow: inset 0 1px rgba(255,255,255,.1),0 10px 28px color-mix(in srgb,var(--xp-accent) 16%,transparent);
  font: inherit;
  font-size: .72rem;
  font-weight: 850;
  opacity: 0;
  transform: translate3d(0,10px,0);
}
.xp-celebration.is-visible .xp-celebration-close { animation: xpButtonArrive .42s 1.35s ease-out both; }
.xp-celebration-close:active { transform:scale(.97); }
.xp-celebration-close:focus-visible { outline:2px solid #fff;outline-offset:3px; }
.xp-celebration.is-visible:not(.is-leaving) .xp-celebration-core {
  animation: xpCoreIdle 3.8s 3.3s ease-in-out infinite;
}

@keyframes xpButtonLaunch { to { transform:translate3d(80%,0,0); } }
@keyframes xpButtonIconLaunch { 45%{transform:translate3d(3px,-5px,0) rotate(12deg)}100%{transform:translate3d(12px,-18px,0) rotate(26deg);opacity:0} }
@keyframes xpBackdropArrive { from{opacity:0}to{opacity:1} }
@keyframes xpBackdropLeave { from{opacity:1}to{opacity:0;transform:scale(1.025)} }
@keyframes xpNebulaBloom { 0%{opacity:0;transform:scale(.45) rotate(-35deg)}45%{opacity:.72}100%{opacity:.25;transform:scale(1.08) rotate(25deg)} }
@keyframes xpCoreFlash { 0%{opacity:0;transform:scale(.2)}34%{opacity:.85}100%{opacity:0;transform:scale(2.9)} }
@keyframes xpStarIgnite { 0%{opacity:0;transform:translate3d(-50%,-50%,0) scale(.1)}18%{opacity:1;transform:translate3d(-50%,-50%,0) scale(1.65)}43%{opacity:.45;transform:translate3d(-50%,-50%,0) scale(.7)}100%{opacity:.9;transform:translate3d(-50%,-50%,0) scale(1)} }
@keyframes xpCometCross { 0%{opacity:0;transform:rotate(-31deg) translate3d(-105vw,0,0) scaleX(.45)}18%{opacity:1}70%{opacity:.82}100%{opacity:0;transform:rotate(-31deg) translate3d(56vw,0,0) scaleX(1)} }
@keyframes xpSystemArrive { 0%{opacity:0;transform:translate3d(0,26px,0) scale(.38) rotate(-8deg)}64%{opacity:1;transform:translate3d(0,-3px,0) scale(1.045) rotate(2deg)}100%{opacity:1;transform:translate3d(0,0,0) scale(1) rotate(0)} }
@keyframes xpOrbitSpinOne { from{transform:rotateX(68deg) rotateZ(-82deg)}to{transform:rotateX(68deg) rotateZ(282deg)} }
@keyframes xpOrbitSpinTwo { from{transform:rotateX(67deg) rotateZ(112deg)}to{transform:rotateX(67deg) rotateZ(-248deg)} }
@keyframes xpOrbitSpinThree { from{transform:rotateX(69deg) rotateZ(12deg)}to{transform:rotateX(69deg) rotateZ(372deg)} }
@keyframes xpEnergyRelease { 0%{opacity:0;transform:translate3d(0,0,0) scale(.2)}17%{opacity:1}62%{opacity:.92}100%{opacity:0;transform:translate3d(var(--mote-x),var(--mote-y),0) scale(.45)} }
@keyframes xpCopyArrive { from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translate3d(0,0,0)} }
@keyframes xpButtonArrive { from{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translate3d(0,0,0)} }
@keyframes xpRocketFloat { 0%,100%{transform:translate3d(0,0,0) rotate(-4deg)}50%{transform:translate3d(3px,-4px,0) rotate(7deg)} }
@keyframes xpCoreIdle { 0%,100%{filter:brightness(1);transform:rotate(-8deg) scale(1)}50%{filter:brightness(1.08);transform:rotate(-8deg) scale(1.025)} }

@media (max-height: 690px) {
  .xp-celebration { grid-template-rows:auto auto auto;gap:7px;padding-block:14px; }
  .xp-celebration-system { width:clamp(164px,45vh,210px); }
  .xp-celebration-copy > strong { font-size:clamp(2.6rem,13vw,4rem); }
  .xp-celebration-copy h2 { margin-top:6px; }
  .xp-level-up,.xp-constellation-label { margin-top:7px; }
}

@media (prefers-reduced-motion: reduce) {
  .mission-claim-button.is-launching::after,
  .mission-claim-button.is-launching svg,
  .xp-celebration *,
  .xp-celebration::before,
  .xp-celebration::after { animation:none !important; }
  .xp-celebration { opacity:1; }
  .xp-celebration-system,.xp-celebration-copy,.xp-celebration-close { opacity:1;transform:none; }
  .xp-celebration-sky > i,.xp-celebration-sky > b,.xp-energy-mote { display:none; }
}

/* Alignement final des actions de localisation et du statut orbital. */
.observation-address-locked-icon{display:grid;place-items:center;line-height:0}
.observation-address-locked-icon .icon{display:block;width:18px;height:18px}
.satellite-live-status{display:inline-grid;grid-template-columns:7px max-content;align-items:center;justify-content:center;column-gap:8px;line-height:1}
.satellite-live-status i{display:block;width:7px;height:7px;margin:0;align-self:center}


/* Titres de membres : rôles prioritaires et titres administrables. */
.member-title-separator { color: rgba(210,218,255,.62); margin: 0 .22rem; }
.member-title { display:inline-flex; align-items:center; max-width:100%; padding:.22rem .52rem; border:1px solid color-mix(in srgb,var(--member-title-color) 62%,transparent); border-radius:.48rem; color:var(--member-title-color); background:color-mix(in srgb,var(--member-title-color) 13%,transparent); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--member-title-color) 8%,transparent); font-size:.72em; font-weight:850; line-height:1.2; letter-spacing:.025em; vertical-align:middle; white-space:normal; overflow-wrap:anywhere; }
.member-title--admin { text-transform:none; box-shadow:0 0 18px color-mix(in srgb,var(--member-title-color) 18%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--member-title-color) 12%,transparent); }
.member-title--moderator { border-radius:999px; }
.profile-rank-line { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:.3rem; }
.post-author small,.topic-author small { display:flex; align-items:center; flex-wrap:wrap; gap:.18rem; }

/* Icône du titre de niveau — distincte des titres utilisateurs. */
.level-title-label { display:inline-flex; align-items:center; gap:.34rem; min-width:0; }
.level-title-icon {
  display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto;
  color:var(--badge, #8ba8ff); font-size:.9em; line-height:1;
  filter:drop-shadow(0 0 7px color-mix(in srgb, var(--badge, #8ba8ff) 58%, transparent));
}
.profile-rank-line .level-title-icon { font-size:1.02em; }
@media (max-width:520px) {
  .profile-rank-line { column-gap:.28rem; row-gap:.38rem; }
  .level-title-label { gap:.28rem; }
}

/* Administration utilisateurs : filtres et pagination dense */
.admin-user-filters{margin-bottom:1rem}.admin-user-filter-grid{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(130px,1fr));gap:.8rem}.admin-filter-actions{display:flex;gap:.65rem;flex-wrap:wrap}.pagination-detailed{display:flex;align-items:center;justify-content:center;gap:.4rem;flex-wrap:wrap}.pagination-page,.pagination-current{min-width:2.5rem;height:2.5rem;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:.8rem;text-decoration:none}.pagination-current{background:linear-gradient(135deg,var(--primary),#6374ff);color:#fff;border-color:transparent;font-weight:800}.pagination-ellipsis{padding:.4rem}.level-title-label{display:inline-flex;align-items:center;gap:.35rem}.level-title-icon{display:inline-flex;line-height:1;flex:0 0 auto}@media(max-width:760px){.admin-user-filter-grid{grid-template-columns:1fr 1fr}.admin-user-filter-grid label:first-child{grid-column:1/-1}}@media(max-width:480px){.admin-user-filter-grid{grid-template-columns:1fr}.admin-user-filter-grid label:first-child{grid-column:auto}.pagination-detailed .button{padding:.65rem .75rem}}

/* V62 — installation PWA et consentement Web Push */
.pwa-install-button {
  position: relative;
  isolation: isolate;
  min-height: 58px;
  overflow: hidden;
  border-color: rgba(182, 204, 255, .34);
  background:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.38), transparent 23%),
    linear-gradient(118deg, #7656ff 0%, #4b6dff 48%, #2bb8ec 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    inset 0 -1px 0 rgba(15,18,76,.34),
    0 13px 30px rgba(72,72,255,.34),
    0 0 24px rgba(78,205,255,.12);
  text-shadow: 0 1px 6px rgba(19,25,86,.45);
}
.pwa-install-button::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -70% auto -70% -45%;
  width: 34%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.48), transparent);
  transform: rotate(17deg) translateX(-180%);
  animation: pwa-install-shine 4.4s ease-in-out infinite;
}
.pwa-install-button::after {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 1px;
  border-radius: inherit;
  background:
    radial-gradient(circle at 80% 26%, rgba(255,255,255,.18) 0 1px, transparent 1.8px),
    radial-gradient(circle at 68% 72%, rgba(255,255,255,.25) 0 1.2px, transparent 2px),
    radial-gradient(circle at 33% 72%, rgba(219,240,255,.18) 0 1px, transparent 1.8px);
}
.pwa-install-copy {
  position: relative;
  z-index: 3;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
}
.pwa-install-copy > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pwa-install-icon {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  filter: drop-shadow(0 0 8px rgba(217,246,255,.65));
}
.pwa-install-sky,
.pwa-install-sky > * { position: absolute; pointer-events: none; }
.pwa-install-sky { z-index: 1; inset: 0; overflow: hidden; border-radius: inherit; }
.pwa-install-sky i {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 8px rgba(255,255,255,.9);
  animation: pwa-star-twinkle 2.2s ease-in-out infinite;
}
.pwa-install-sky i:nth-child(1) { inset: 17% auto auto 18%; animation-delay: -.4s; }
.pwa-install-sky i:nth-child(2) { inset: auto 15% 22% auto; width: 2px; height: 2px; animation-delay: -1.2s; }
.pwa-install-sky i:nth-child(3) { inset: 19% 36% auto auto; width: 2px; height: 2px; animation-delay: -.8s; }
.pwa-install-sky b {
  width: 72px;
  height: 1.5px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, rgba(222,246,255,.35), #fff);
  filter: drop-shadow(0 0 5px rgba(148,232,255,.8));
  transform: rotate(-22deg) translate3d(-120px, 0, 0);
  animation: pwa-shooting-star 3.8s ease-in-out infinite;
}
.pwa-install-sky b:nth-of-type(1) { top: 12px; left: 24%; }
.pwa-install-sky b:nth-of-type(2) { bottom: 8px; left: 55%; animation-delay: -2s; animation-duration: 4.8s; }
.pwa-install-button.is-ready { animation: pwa-install-breathe 3.6s ease-in-out infinite; }
.pwa-install-button.is-installed {
  border-color: rgba(111,232,194,.35);
  background: linear-gradient(118deg, #287f72, #3d78ac 58%, #596fe7);
}
.pwa-install-button.is-busy { pointer-events: none; }
.pwa-install-button.is-busy .pwa-install-icon { animation: pwa-install-spin 1s linear infinite; }
.pwa-install-button[hidden] { display: none !important; }

@keyframes pwa-install-shine {
  0%, 52% { transform: rotate(17deg) translateX(-180%); opacity: 0; }
  60% { opacity: .9; }
  76%, 100% { transform: rotate(17deg) translateX(560%); opacity: 0; }
}
@keyframes pwa-star-twinkle { 0%,100% { opacity: .3; transform: scale(.7); } 48% { opacity: 1; transform: scale(1.35); } }
@keyframes pwa-shooting-star {
  0%, 58% { opacity: 0; transform: rotate(-22deg) translate3d(-120px, 0, 0); }
  62% { opacity: 1; }
  83%, 100% { opacity: 0; transform: rotate(-22deg) translate3d(210px, 0, 0); }
}
@keyframes pwa-install-breathe { 0%,100% { filter: brightness(1); } 50% { filter: brightness(1.09); } }
@keyframes pwa-install-spin { to { transform: rotate(360deg); } }

.pwa-modal {
  position: fixed;
  z-index: 180;
  inset: 0;
  width: min(100%, 767px);
  margin-inline: auto;
  display: grid;
  align-items: end;
  padding: 18px max(var(--page-gutter), env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(var(--page-gutter), env(safe-area-inset-left));
}
.pwa-modal[hidden] { display: none; }
.pwa-modal-backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  border: 0;
  background: rgba(1,3,14,.78);
  backdrop-filter: blur(7px) saturate(115%);
}
.pwa-modal-card {
  position: relative;
  width: 100%;
  max-height: min(84svh, 690px);
  padding: 22px 18px 18px;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(156,174,239,.26);
  border-radius: 26px;
  background:
    radial-gradient(circle at 84% 4%, rgba(73,198,255,.16), transparent 34%),
    radial-gradient(circle at 12% 0%, rgba(135,99,255,.2), transparent 37%),
    linear-gradient(155deg, rgba(18,27,62,.995), rgba(6,10,27,.995));
  box-shadow: inset 0 1px rgba(255,255,255,.08), 0 30px 90px rgba(0,0,0,.58);
  transform: translateY(24px) scale(.985);
  opacity: 0;
  transition: transform .22s ease, opacity .22s ease;
}
.pwa-modal.open .pwa-modal-card { transform: translateY(0) scale(1); opacity: 1; }
.pwa-modal-cosmos { position: absolute; inset: 0; overflow: hidden; border-radius: inherit; pointer-events: none; }
.pwa-modal-cosmos i,
.pwa-modal-cosmos b { position: absolute; }
.pwa-modal-cosmos i {
  width: 3px; height: 3px; border-radius: 50%; background: rgba(255,255,255,.85); box-shadow: 0 0 9px rgba(151,220,255,.75);
  animation: pwa-star-twinkle 2.6s ease-in-out infinite;
}
.pwa-modal-cosmos i:nth-child(1) { top: 24px; left: 18%; }
.pwa-modal-cosmos i:nth-child(2) { top: 60px; right: 17%; width: 2px; height: 2px; animation-delay: -.8s; }
.pwa-modal-cosmos i:nth-child(3) { top: 132px; right: 8%; animation-delay: -1.6s; }
.pwa-modal-cosmos b {
  width: 110px; height: 1px; opacity: .5; background: linear-gradient(90deg,transparent,rgba(143,220,255,.8),transparent); transform: rotate(-27deg);
}
.pwa-modal-cosmos b:nth-of-type(1) { top: 74px; left: -32px; }
.pwa-modal-cosmos b:nth-of-type(2) { top: 168px; right: -42px; }
.pwa-modal-close {
  position: absolute;
  z-index: 3;
  top: 12px;
  right: 12px;
  width: 38px;
  height: 38px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 1px solid rgba(168,181,236,.18);
  border-radius: 13px;
  color: #e6e9ff;
  background: rgba(255,255,255,.045);
}
.pwa-modal-close .icon { width: 19px; height: 19px; }
.pwa-modal-emblem {
  position: relative;
  width: 66px;
  height: 66px;
  margin: 2px 0 16px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(159,183,255,.25);
  border-radius: 21px;
  color: #f1f4ff;
  background: linear-gradient(145deg, rgba(124,91,255,.35), rgba(51,177,225,.16));
  box-shadow: inset 0 1px rgba(255,255,255,.16), 0 14px 32px rgba(60,64,211,.25), 0 0 28px rgba(72,207,255,.1);
}
.pwa-modal-emblem::after {
  content: "";
  position: absolute;
  inset: -7px;
  border: 1px solid rgba(115,205,255,.13);
  border-radius: 26px;
  transform: rotate(7deg);
}
.pwa-modal-emblem span { display: grid; place-items: center; }
.pwa-modal-emblem span[hidden] { display: none; }
.pwa-modal-emblem .icon { width: 31px; height: 31px; filter: drop-shadow(0 0 9px rgba(181,225,255,.45)); }
.pwa-modal-emblem [data-pwa-modal-icon="warning"] { font-size: 1.75rem; font-weight: 900; }
.pwa-modal-card .section-kicker { position: relative; margin-bottom: 5px; color: #aeb9ff; }
.pwa-modal-card h2 { position: relative; margin: 0; padding-right: 34px; font-size: clamp(1.25rem, 6vw, 1.7rem); line-height: 1.12; }
.pwa-modal-description { position: relative; margin: 10px 0 0; color: #aeb7d2; font-size: .84rem; line-height: 1.55; }
.pwa-install-steps { position: relative; margin: 16px 0 0; padding: 0; display: grid; gap: 9px; list-style: none; }
.pwa-install-steps[hidden] { display: none; }
.pwa-install-steps li {
  padding: 10px 11px;
  display: grid;
  grid-template-columns: 30px minmax(0,1fr);
  align-items: center;
  gap: 10px;
  border: 1px solid rgba(146,166,229,.14);
  border-radius: 15px;
  background: rgba(255,255,255,.035);
}
.pwa-install-steps li > span {
  width: 30px; height: 30px; display: grid; place-items: center; border-radius: 10px; color: #fff; background: linear-gradient(135deg,#7869ef,#3f9bd5); font-size: .72rem; font-weight: 900;
}
.pwa-install-steps p { margin: 0; color: #d9def0; font-size: .76rem; line-height: 1.4; }
.pwa-modal-status {
  position: relative;
  margin-top: 14px;
  padding: 10px 12px;
  border: 1px solid rgba(89,210,177,.25);
  border-radius: 14px;
  color: #baf3df;
  background: rgba(52,158,126,.1);
  font-size: .74rem;
  line-height: 1.45;
}
.pwa-modal-status[hidden] { display: none; }
.pwa-modal-status.is-error { border-color: rgba(255,119,143,.3); color: #ffc2ce; background: rgba(183,57,84,.11); }
.pwa-modal-status.is-waiting { border-color: rgba(109,184,255,.27); color: #c7e7ff; background: rgba(53,112,190,.11); }
.pwa-modal-actions { position: relative; margin-top: 18px; display: grid; gap: 8px; }
.pwa-modal-actions .button { min-height: 49px; }
.pwa-modal-privacy { position: relative; margin-top: 11px; display: block; color: #747f9f; font-size: .62rem; line-height: 1.45; text-align: center; }
.pwa-modal-privacy[hidden] { display: none; }
body.pwa-modal-open { overflow: hidden; }

@media (min-width: 560px) {
  .pwa-modal { align-items: center; padding: 28px; }
  .pwa-modal-card { max-width: 460px; margin-inline: auto; }
}
@media (max-width: 460px) {
  .hero .pwa-install-actions { grid-template-columns: 1fr; }
  .hero .pwa-install-actions .button { width: 100%; }
}
@media (max-width: 370px) {
  .pwa-install-copy { gap: 6px; }
  .pwa-install-icon { width: 18px; height: 18px; flex-basis: 18px; }
  .hero .pwa-install-button { font-size: .72rem; }
  .pwa-modal-card { padding-inline: 15px; }
}
@media (prefers-reduced-motion: reduce) {
  .pwa-install-button,
  .pwa-install-button::before,
  .pwa-install-sky i,
  .pwa-install-sky b,
  .pwa-modal-cosmos i,
  .pwa-install-button.is-busy .pwa-install-icon { animation: none !important; }
  .pwa-modal-card { transition: none; }
}

/* V62 — compléments d’administration détectés par l’audit UI */
.admin-user-title-summary{display:block;color:var(--muted-2);font-size:.56rem;font-weight:700;line-height:1.3;letter-spacing:.02em;white-space:normal}
.title-preview{min-width:0}

/* V1.2.1 — animation d’installation stabilisée pour Safari iOS / Chromium */
.pwa-install-button{contain:paint;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:auto}
.pwa-install-button::before{z-index:2;inset:-75% auto -75% -42%;width:32%;transform:translate3d(-210%,0,0) rotate(17deg);will-change:transform,opacity;animation:pwa-install-shine-stable 4.8s cubic-bezier(.22,.61,.36,1) infinite}
.pwa-install-button::after{z-index:0;will-change:opacity;animation:pwa-install-glow-stable 3.8s ease-in-out infinite}
.pwa-install-copy{z-index:4;transform:translateZ(0)}
.pwa-install-sky{z-index:3;transform:translateZ(0);contain:paint}
.pwa-install-sky i{will-change:opacity,transform;transform:translateZ(0);animation-name:pwa-star-twinkle-stable}
.pwa-install-sky b{left:-92px;width:78px;transform:translate3d(0,0,0) rotate(-20deg);transform-origin:center;will-change:transform,opacity;animation:pwa-shooting-star-stable 4.4s cubic-bezier(.18,.7,.22,1) infinite}
.pwa-install-sky b:nth-of-type(1){top:11px;left:-92px}
.pwa-install-sky b:nth-of-type(2){bottom:9px;left:-112px;animation-delay:2.15s;animation-duration:5.1s}
.pwa-install-button.is-ready{animation:none}
.pwa-install-button.is-busy::before,.pwa-install-button.is-busy::after,.pwa-install-button.is-busy .pwa-install-sky b{animation-play-state:paused}
@keyframes pwa-install-shine-stable{0%,54%{opacity:0;transform:translate3d(-210%,0,0) rotate(17deg)}58%{opacity:.85}76%{opacity:0;transform:translate3d(670%,0,0) rotate(17deg)}100%{opacity:0;transform:translate3d(670%,0,0) rotate(17deg)}}
@keyframes pwa-install-glow-stable{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes pwa-star-twinkle-stable{0%,100%{opacity:.28;transform:translateZ(0) scale(.72)}50%{opacity:1;transform:translateZ(0) scale(1.3)}}
@keyframes pwa-shooting-star-stable{0%,62%{opacity:0;transform:translate3d(0,0,0) rotate(-20deg)}66%{opacity:1}86%,100%{opacity:0;transform:translate3d(520px,0,0) rotate(-20deg)}}

/* Accueil — accès au journal de bord */
.hero-updates-link{display:inline-flex!important;align-items:center;gap:12px;color:#cbd3f5;text-decoration:none;pointer-events:auto!important;letter-spacing:.18em;line-height:1.35}
.hero-updates-link strong{font-size:.61rem;font-weight:850;text-align:left}
.hero-updates-link:hover,.hero-updates-link:focus-visible{color:#fff}
.hero-updates-link span{flex:0 0 auto}

/* Profil — gestion de l’abonnement Push de l’appareil */
.push-device-settings{margin-top:12px;padding:16px;background:linear-gradient(145deg,rgba(25,35,79,.94),rgba(8,15,36,.96));border-color:rgba(105,183,255,.18)}
.push-device-settings-head{display:flex;align-items:flex-start;gap:12px}.push-device-settings-head>span{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:14px;color:#bdeeff;background:linear-gradient(145deg,rgba(104,91,255,.34),rgba(48,190,212,.18))}.push-device-settings-head .icon{width:21px}.push-device-settings h3{margin:1px 0 4px;font-size:.92rem}.push-device-settings p{margin:0;color:var(--muted);font-size:.7rem;line-height:1.45}.push-device-settings p[data-state="enabled"]{color:#8cf0ce}.push-device-settings p[data-state="blocked"],.push-device-settings p[data-state="error"]{color:#ffb1bd}.push-device-settings-actions{display:grid;gap:8px;margin-top:14px}.push-device-settings>small{display:block;margin-top:10px;color:var(--muted-2);font-size:.6rem;line-height:1.45}

/* Journal de bord public */
.screen-updates .page-content{padding-top:0}.updates-hero{position:relative;isolation:isolate;overflow:hidden;margin-inline:calc(var(--page-gutter)*-1);padding:24px var(--page-gutter) 26px;min-height:390px;background:radial-gradient(circle at 88% 12%,rgba(50,202,226,.2),transparent 31%),radial-gradient(circle at 8% 22%,rgba(117,72,255,.36),transparent 37%),linear-gradient(165deg,#121941 0%,#071326 58%,#040815 100%)}
.updates-hero::after{content:"";position:absolute;z-index:-1;inset:auto -22% -48% 18%;height:260px;border:1px solid rgba(118,201,255,.14);border-radius:50%;transform:rotate(-15deg)}.updates-hero-sky{position:absolute;z-index:-1;inset:0;pointer-events:none;background-image:radial-gradient(circle at 12% 26%,#fff 0 1px,transparent 1.6px),radial-gradient(circle at 78% 20%,#fff 0 1px,transparent 1.5px),radial-gradient(circle at 46% 62%,#9eefff 0 1px,transparent 1.6px);background-size:150px 120px,210px 170px,260px 210px;opacity:.75}.updates-hero-sky b{position:absolute;width:140px;height:1px;background:linear-gradient(90deg,transparent,rgba(131,226,255,.7),transparent);transform:rotate(-28deg)}.updates-hero-sky b:first-of-type{right:-35px;top:105px}.updates-hero-sky b:last-of-type{left:-65px;bottom:80px}.updates-back{display:grid;place-items:center;width:40px;height:40px;color:#fff;border:1px solid rgba(255,255,255,.13);border-radius:14px;background:rgba(4,9,28,.45);backdrop-filter:blur(10px)}.updates-back .icon{width:20px}.updates-hero-copy{margin-top:42px}.updates-hero-copy h1{margin:9px 0 14px;font-size:clamp(2.55rem,12vw,4.5rem);line-height:.93;letter-spacing:-.058em}.updates-hero-copy>p:last-child{max-width:500px;margin:0;color:#c3cbe6;font-size:.84rem;line-height:1.55}.updates-latest{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 12px;margin-top:28px;padding:14px 15px;color:#fff;text-decoration:none;border:1px solid rgba(130,216,255,.22);border-radius:20px;background:linear-gradient(125deg,rgba(89,65,219,.36),rgba(30,125,173,.22));box-shadow:inset 0 1px rgba(255,255,255,.08),0 16px 40px rgba(0,0,0,.22)}.updates-latest span{grid-column:1/-1;color:#9eacd6;font-size:.55rem;font-weight:850;letter-spacing:.19em}.updates-latest strong{font-size:1.15rem}.updates-latest small{overflow:hidden;color:#d7def4;font-size:.7rem;white-space:nowrap;text-overflow:ellipsis}.updates-latest .icon{width:18px}.updates-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0 28px}.updates-stats div{min-width:0;padding:13px 8px;text-align:center;border:1px solid rgba(255,255,255,.07);border-radius:17px;background:rgba(17,24,53,.8)}.updates-stats strong,.updates-stats span{display:block}.updates-stats strong{font-size:1.2rem}.updates-stats span{margin-top:3px;color:var(--muted);font-size:.52rem;line-height:1.25}.updates-timeline{padding-bottom:10px}.update-release{position:relative;padding-left:22px;scroll-margin-top:90px}.update-release+.update-release{margin-top:18px}.update-rail{position:absolute;left:5px;top:20px;bottom:-28px;width:2px;background:linear-gradient(#6f7aff,rgba(91,133,255,.08))}.update-release:last-child .update-rail{bottom:24px}.update-rail span{position:absolute;left:50%;top:0;width:10px;height:10px;border:2px solid #d9f7ff;border-radius:50%;background:#6d73ff;box-shadow:0 0 18px rgba(110,214,255,.8);transform:translate(-50%,-10%)}.update-release.is-important .update-rail span{width:13px;height:13px;background:#7d5dff}.update-release-head{display:flex;align-items:center;gap:12px;margin-bottom:-10px;position:relative;z-index:2}.update-version-orb{position:relative;display:grid;place-items:center;width:70px;height:70px;flex:0 0 70px;border:1px solid rgba(164,189,255,.25);border-radius:23px;background:linear-gradient(145deg,rgba(121,88,255,.38),rgba(41,173,215,.16));box-shadow:0 14px 30px rgba(40,45,142,.24),inset 0 1px rgba(255,255,255,.13)}.is-important .update-version-orb{background:linear-gradient(145deg,rgba(142,82,255,.55),rgba(46,149,223,.25));box-shadow:0 0 32px rgba(116,87,255,.2)}.update-version-orb span{font-size:.82rem;font-weight:900}.update-version-orb i{position:absolute;inset:-6px;border:1px solid rgba(102,207,255,.12);border-radius:27px;transform:rotate(8deg)}.update-release-meta{display:grid;gap:6px}.update-type-badge{color:#9fb2e8;font-size:.51rem;font-weight:900;letter-spacing:.13em}.is-important .update-type-badge{color:#c8b7ff}.update-release-meta time{color:var(--muted);font-size:.61rem}.update-release-body{padding:28px 16px 16px;border:1px solid rgba(126,145,217,.14);border-radius:0 23px 23px 23px;background:radial-gradient(circle at 90% 0,rgba(69,178,225,.09),transparent 34%),linear-gradient(155deg,rgba(20,28,61,.96),rgba(8,13,31,.98));box-shadow:0 18px 46px rgba(0,0,0,.2)}.update-release-body h2{margin:0 0 8px;font-size:1.2rem;line-height:1.12}.update-summary{margin:0;color:#c1c8df;font-size:.76rem;line-height:1.5}.update-details{display:grid;gap:9px;margin:16px 0 0;padding:0;list-style:none}.update-details li{display:flex;align-items:flex-start;gap:9px;padding:10px;border:1px solid rgba(255,255,255,.055);border-radius:14px;background:rgba(255,255,255,.027)}.update-details li>span{display:grid;place-items:center;width:21px;height:21px;flex:0 0 21px;color:#8ce8da;border-radius:7px;background:rgba(78,202,188,.1)}.update-details .icon{width:12px}.update-details p{margin:1px 0 0;color:#cbd2e7;font-size:.7rem;line-height:1.42}.update-release-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;padding-top:13px;border-top:1px solid rgba(255,255,255,.06)}.update-author{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 7px;min-width:0}.update-author>span{grid-row:1/3;color:#81ddff}.update-author small,.update-author strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.update-author small{color:var(--muted-2);font-size:.5rem}.update-author strong{font-size:.62rem}.update-like{display:grid;grid-template-columns:auto auto;align-items:center;gap:0 5px;min-width:72px;padding:7px 10px;color:#b9c1dc;text-decoration:none;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(255,255,255,.035)}button.update-like{font:inherit}.update-like>span{grid-row:1/3;font-size:1rem}.update-like strong{font-size:.68rem}.update-like small{font-size:.48rem}.update-like.is-liked{color:#ffb2cc;border-color:rgba(255,126,170,.25);background:rgba(255,84,143,.09)}

/* Administration des versions */
.admin-update-note,.admin-update-toolbar{display:flex;align-items:center;gap:12px;margin:12px 0;padding:14px;border:1px solid rgba(102,192,255,.16);border-radius:18px;background:linear-gradient(135deg,rgba(37,35,91,.75),rgba(11,24,48,.82))}.admin-update-note>span{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:14px;background:rgba(108,94,255,.2)}.admin-update-note .icon{width:21px}.admin-update-note strong,.admin-update-toolbar strong{display:block;font-size:.78rem}.admin-update-note p,.admin-update-toolbar small{display:block;margin:3px 0 0;color:var(--muted);font-size:.62rem;line-height:1.4}.admin-update-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-update-toolbar{justify-content:space-between}.admin-update-delivery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.admin-update-delivery-grid span{padding:10px;text-align:center;border:1px solid rgba(255,255,255,.06);border-radius:13px;background:rgba(255,255,255,.025)}.admin-update-delivery-grid small,.admin-update-delivery-grid strong{display:block}.admin-update-delivery-grid small{color:var(--muted);font-size:.51rem}.admin-update-delivery-grid strong{margin-top:3px;font-size:.9rem}.admin-update-delivery-grid .has-error{border-color:rgba(255,97,121,.28);color:#ffabb8}
@media(max-width:520px){.admin-update-delivery-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:380px){.updates-stats{grid-template-columns:1fr}.update-release{padding-left:18px}.update-version-orb{width:62px;height:62px;flex-basis:62px}.admin-update-toolbar{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){.pwa-install-button::before,.pwa-install-button::after,.pwa-install-sky i,.pwa-install-sky b{animation:none!important}.updates-hero-sky{animation:none}}
.admin-update-create{margin:12px 0 14px}
.admin-update-form{margin:0;border-color:rgba(130,156,235,.13);background:linear-gradient(155deg,rgba(18,27,60,.97),rgba(8,14,34,.99))}
.admin-update-list{gap:12px}
.admin-update-record{border-color:rgba(127,151,226,.15);background:linear-gradient(150deg,rgba(20,28,62,.98),rgba(8,14,33,.99))}

/* V1.2.2 — Raffinements premium UI : mises à jour et détail photo */
.screen-updates .page{
  padding-top:calc(var(--topbar-height) + env(safe-area-inset-top));
}
.screen-updates .page-content{
  padding-top:0;
}
.updates-page-shell{
  display:grid;
  gap:14px;
}
.updates-hero{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  margin-inline:calc(var(--page-gutter) * -1);
  margin-top:calc(var(--page-gutter) * -1);
  padding:18px var(--page-gutter) 24px;
  min-height:360px;
  border-bottom-left-radius:30px;
  border-bottom-right-radius:30px;
  background:
    radial-gradient(circle at 88% 12%,rgba(50,202,226,.2),transparent 31%),
    radial-gradient(circle at 8% 22%,rgba(117,72,255,.36),transparent 37%),
    linear-gradient(165deg,#121941 0%,#071326 58%,#040815 100%);
  box-shadow:0 22px 48px rgba(0,0,0,.24);
}
.updates-hero::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 18%,transparent 82%,rgba(0,0,0,.14));
  pointer-events:none;
}
.updates-hero::after{
  content:"";
  position:absolute;
  z-index:-1;
  inset:auto -22% -48% 18%;
  height:260px;
  border:1px solid rgba(118,201,255,.14);
  border-radius:50%;
  transform:rotate(-15deg);
}
.updates-hero-top{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:flex-start;
}
.updates-back{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  color:#fff;
  border:1px solid rgba(255,255,255,.13);
  border-radius:15px;
  background:rgba(4,9,28,.48);
  backdrop-filter:blur(10px);
  box-shadow:0 10px 24px rgba(0,0,0,.18), inset 0 1px rgba(255,255,255,.08);
}
.updates-back .icon{width:20px;height:20px}
.updates-hero-copy{
  position:relative;
  z-index:1;
  margin-top:22px;
}
.updates-hero-copy h1{
  margin:10px 0 14px;
  font-size:clamp(2.55rem,12vw,4.5rem);
  line-height:.93;
  letter-spacing:-.058em;
}
.updates-hero-copy>p:last-child{
  max-width:500px;
  margin:0;
  color:#c3cbe6;
  font-size:.84rem;
  line-height:1.55;
}
.updates-latest{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:5px 12px;
  margin-top:24px;
  padding:15px 16px;
  color:#fff;
  text-decoration:none;
  border:1px solid rgba(130,216,255,.22);
  border-radius:22px;
  background:linear-gradient(125deg,rgba(89,65,219,.40),rgba(30,125,173,.26));
  box-shadow:inset 0 1px rgba(255,255,255,.08),0 16px 40px rgba(0,0,0,.22);
}
.updates-latest span{
  grid-column:1/-1;
  color:#9eacd6;
  font-size:.55rem;
  font-weight:850;
  letter-spacing:.19em;
}
.updates-latest strong{
  font-size:1.15rem;
  line-height:1;
}
.updates-latest small{
  overflow:hidden;
  color:#d7def4;
  font-size:.72rem;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.updates-latest-arrow{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.05);
  box-shadow:inset 0 1px rgba(255,255,255,.06);
}
.updates-latest-arrow .icon{
  width:18px;
  height:18px;
  transform:translateX(1px);
}
.updates-stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin:0 0 28px;
}
.updates-stats div{
  min-width:0;
  padding:13px 8px;
  text-align:center;
  border:1px solid rgba(255,255,255,.07);
  border-radius:17px;
  background:rgba(17,24,53,.8);
}
.photo-author-card{
  align-items:start;
  gap:10px 12px;
}
.photo-author-content{
  display:grid;
  gap:4px;
  align-content:start;
  padding-top:1px;
}
.photo-author-meta{
  line-height:1.35;
  white-space:normal;
}
.photo-author-presence{
  display:inline-flex;
  align-items:center;
  margin-top:1px;
}
.photo-author-card time{
  align-self:start;
  padding-top:3px;
}
@media(max-width:520px){
  .updates-page-shell{gap:12px}
  .updates-hero{
    margin-top:-10px;
    min-height:344px;
    padding-top:16px;
    padding-bottom:22px;
    border-bottom-left-radius:28px;
    border-bottom-right-radius:28px;
  }
  .updates-hero-copy{
    margin-top:18px;
  }
  .updates-latest{
    grid-template-columns:minmax(0,1fr) auto;
    gap:4px 12px;
  }
  .updates-latest span{
    grid-column:1/-1;
  }
  .updates-latest strong,
  .updates-latest small{
    grid-column:1;
  }
  .updates-latest-arrow{
    grid-column:2;
    grid-row:2 / span 2;
    align-self:center;
    justify-self:end;
  }
  .photo-author-card{
    grid-template-columns:46px minmax(0,1fr);
  }
  .photo-author-card time{
    grid-column:2;
    margin-top:1px;
    padding-top:0;
    text-align:start;
  }
  .photo-author-content{
    gap:5px;
  }
}
@media(max-width:380px){
  .updates-stats{
    grid-template-columns:1fr;
  }
  .updates-latest{
    padding:14px;
  }
}

/* V1.2.3 — Événement spécial : éclipse solaire et compte à rebours premium */
.special-event-home{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  display:grid;
  gap:14px;
  margin:0 0 14px;
  padding:18px 18px 17px;
  border:1px solid rgba(255,211,110,.28);
  border-radius:28px;
  color:#fff3d1;
  background:
    radial-gradient(circle at 88% 14%,rgba(255,219,122,.26),transparent 27%),
    radial-gradient(circle at 12% 8%,rgba(255,176,61,.18),transparent 24%),
    linear-gradient(150deg,rgba(80,51,11,.96) 0%,rgba(33,22,10,.985) 52%,rgba(16,13,11,.99) 100%);
  box-shadow:0 20px 48px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.06);
}
.special-event-home::before{
  content:"";
  position:absolute;
  inset:auto -12% -44% 10%;
  height:240px;
  border:1px solid rgba(255,221,148,.12);
  border-radius:50%;
  transform:rotate(-9deg);
}
.special-event-aura,
.special-event-aura i,
.special-event-aura b{position:absolute;pointer-events:none}
.special-event-aura{inset:0;z-index:-1}
.special-event-aura i,
.special-event-aura b{display:block;border-radius:50%}
.special-event-aura i:nth-child(1){top:22px;right:34px;width:10px;height:10px;background:rgba(255,238,179,.92);box-shadow:0 0 18px rgba(255,215,96,.58)}
.special-event-aura i:nth-child(2){bottom:42px;left:28px;width:6px;height:6px;background:rgba(255,231,167,.78);box-shadow:0 0 10px rgba(255,216,119,.46)}
.special-event-aura b:nth-child(3){top:18%;left:50%;width:240px;height:1px;transform:rotate(-14deg);background:linear-gradient(90deg,transparent,rgba(255,231,164,.4),transparent)}
.special-event-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.section-kicker-gold{color:#f6d182}
.special-event-head h2{
  margin:6px 0 0;
  font-size:clamp(1.6rem,7.5vw,2.5rem);
  line-height:.95;
  letter-spacing:-.045em;
}
.special-event-caption{
  margin:-2px 0 0;
  color:#efd39d;
  font-size:.84rem;
  font-weight:760;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.special-event-countdown{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
.special-event-countdown>div{
  min-width:0;
  padding:14px 8px 12px;
  text-align:center;
  border:1px solid rgba(255,219,122,.18);
  border-radius:20px;
  background:linear-gradient(180deg,rgba(255,221,145,.07),rgba(255,255,255,.03));
  box-shadow:inset 0 1px rgba(255,255,255,.06);
}
.special-event-countdown strong{
  display:block;
  color:#fffaf0;
  font-size:clamp(1.5rem,8vw,2.4rem);
  line-height:1;
  letter-spacing:-.06em;
}
.special-event-countdown span{
  display:block;
  margin-top:6px;
  color:#dfbe80;
  font-size:.67rem;
  font-weight:850;
  letter-spacing:.18em;
}
.special-event-reminder{
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  gap:11px;
  margin:0;
  padding:12px 13px;
  color:#fff1cc;
  font-size:.76rem;
  line-height:1.5;
  border:1px solid rgba(255,219,122,.16);
  border-radius:18px;
  background:rgba(255,232,176,.06);
}
.special-event-reminder-icon{
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border:1px solid rgba(255,219,122,.13);
  border-radius:12px;
  color:#ffd46e;
  background:rgba(255,214,110,.07);
  box-shadow:inset 0 1px rgba(255,255,255,.04);
}
.special-event-reminder-icon .icon{
  display:block;
  width:18px;
  height:18px;
}
.special-event-reminder>span:last-child{
  min-width:0;
  align-self:center;
}
.special-event-foot{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.special-event-source{
  color:#ffd46e;
  font-size:.72rem;
  font-weight:780;
  text-decoration:none;
}
.special-event-foot small{
  color:#d8bb86;
  font-size:.68rem;
  line-height:1.4;
  text-align:end;
}
@media(max-width:520px){
  .special-event-home{padding:17px 15px 16px;border-radius:24px}
  .special-event-countdown{gap:8px}
  .special-event-countdown>div{padding:13px 6px 11px;border-radius:17px}
  .special-event-foot{align-items:flex-start;flex-direction:column}
  .special-event-foot small{text-align:start}
}
@media(max-width:380px){
  .special-event-countdown{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* V1.2.5 — Console de test Push réservée à l’appareil administrateur courant */
.admin-push-device{
  display:grid;
  gap:16px;
  padding:17px;
  background:
    radial-gradient(circle at 92% 4%,rgba(70,205,255,.12),transparent 28%),
    linear-gradient(155deg,rgba(19,28,62,.97),rgba(8,13,31,.99));
}
.admin-push-device-status{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center;
  gap:11px;
  padding:13px 14px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:rgba(255,255,255,.035);
}
.admin-push-device-status strong,
.admin-push-device-status small{display:block}
.admin-push-device-status strong{font-size:.82rem}
.admin-push-device-status small{margin-top:3px;font-size:.64rem;line-height:1.42}
.admin-push-device-indicator{
  width:13px;
  height:13px;
  border-radius:50%;
  background:#7580a6;
  box-shadow:0 0 0 5px rgba(117,128,166,.1);
}
.admin-push-device-status[data-state="checking"] .admin-push-device-indicator{animation:presence-pulse 1s ease-in-out infinite}
.admin-push-device-status[data-state="ready"]{border-color:rgba(88,223,176,.22);background:rgba(54,172,133,.07)}
.admin-push-device-status[data-state="ready"] .admin-push-device-indicator{background:var(--success);box-shadow:0 0 0 5px rgba(88,223,176,.12),0 0 18px rgba(88,223,176,.45)}
.admin-push-device-status[data-state="blocked"],
.admin-push-device-status[data-state="error"]{border-color:rgba(255,113,136,.22);background:rgba(255,80,109,.065)}
.admin-push-device-status[data-state="blocked"] .admin-push-device-indicator,
.admin-push-device-status[data-state="error"] .admin-push-device-indicator{background:var(--danger);box-shadow:0 0 0 5px rgba(255,113,136,.11)}
.admin-push-device-status[data-state="install"],
.admin-push-device-status[data-state="disabled"]{border-color:rgba(255,198,109,.2);background:rgba(255,179,68,.055)}
.admin-push-device-status[data-state="install"] .admin-push-device-indicator,
.admin-push-device-status[data-state="disabled"] .admin-push-device-indicator{background:var(--warning);box-shadow:0 0 0 5px rgba(255,198,109,.1)}
.admin-push-server-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.admin-push-server-grid>span{
  min-width:0;
  padding:11px 9px;
  text-align:center;
  border:1px solid rgba(255,255,255,.065);
  border-radius:15px;
  background:rgba(255,255,255,.025);
}
.admin-push-server-grid small,
.admin-push-server-grid strong{display:block}
.admin-push-server-grid small{font-size:.5rem;line-height:1.25}
.admin-push-server-grid strong{margin-top:4px;font-size:.73rem;overflow-wrap:anywhere}
.admin-push-test-form label>small{display:block;margin-top:5px}
.admin-push-scope-note{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:12px 13px;
  color:#dce4ff;
  border:1px solid rgba(86,216,255,.13);
  border-radius:17px;
  background:rgba(61,164,214,.055);
}
.admin-push-scope-note .icon{width:18px;height:18px;color:#79ddff}
.admin-push-scope-note p{margin:0;font-size:.68rem;line-height:1.45}
.admin-push-history-item{display:grid;gap:7px;padding:14px}
.admin-push-history-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.admin-push-history-head time{color:var(--muted);font-size:.58rem}
.admin-push-history-item>strong{font-size:.83rem}
.admin-push-history-item>p{margin:0;color:#cbd2e8;font-size:.7rem;line-height:1.45}
.admin-push-history-item>small{font-size:.58rem}
@media(max-width:400px){
  .admin-push-server-grid{grid-template-columns:1fr}
  .admin-push-server-grid>span{text-align:start}
}

/* V1.2.6 — Processeur fiable des notifications Push différées */
.admin-push-worker-status{
  display:grid;
  grid-template-columns:42px minmax(0,1fr);
  align-items:center;
  gap:12px;
  margin-top:12px;
  padding:13px;
  border:1px solid rgba(255,198,109,.18);
  border-radius:18px;
  background:rgba(255,179,68,.055);
}
.admin-push-worker-status.is-healthy{
  border-color:rgba(88,223,176,.22);
  background:rgba(54,172,133,.07);
}
.admin-push-worker-icon{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  border-radius:15px;
  color:var(--warning);
  background:rgba(255,198,109,.09);
}
.admin-push-worker-status.is-healthy .admin-push-worker-icon{
  color:var(--success);
  background:rgba(88,223,176,.10);
}
.admin-push-worker-icon .icon{width:19px;height:19px}
.admin-push-worker-status strong,
.admin-push-worker-status small{display:block}
.admin-push-worker-status strong{font-size:.8rem}
.admin-push-worker-status small{margin-top:4px;font-size:.63rem;line-height:1.43}
.admin-push-cron-details{
  margin-top:14px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:19px;
  background:rgba(255,255,255,.025);
  overflow:hidden;
}
.admin-push-cron-details>summary{
  display:grid;
  grid-template-columns:22px minmax(0,1fr) 20px;
  align-items:center;
  gap:9px;
  padding:14px;
  cursor:pointer;
  list-style:none;
  font-size:.74rem;
  font-weight:800;
}
.admin-push-cron-details>summary::-webkit-details-marker{display:none}
.admin-push-cron-details>summary .icon:last-child{transition:transform .2s ease}
.admin-push-cron-details[open]>summary .icon:last-child{transform:rotate(90deg)}
.admin-push-cron-details>div{
  display:grid;
  gap:11px;
  padding:0 14px 14px;
  color:#cbd2e8;
  font-size:.68rem;
  line-height:1.48;
}
.admin-push-cron-details p{margin:0}
.admin-push-cron-details code{
  display:block;
  overflow:auto;
  padding:12px;
  border:1px solid rgba(86,216,255,.12);
  border-radius:14px;
  color:#bfefff;
  background:#060b1d;
  font-size:.59rem;
  line-height:1.45;
  white-space:pre-wrap;
  word-break:break-all;
}
.admin-push-history-item.is-overdue{
  border-color:rgba(255,113,136,.25);
  box-shadow:0 0 0 1px rgba(255,113,136,.05),0 14px 34px rgba(0,0,0,.2);
}

/* V1.2.7 — File MySQL + Cron PHP Hostinger */
.admin-push-cron-steps{
  display:grid;
  gap:8px;
  margin:12px 0;
  padding-left:22px;
  color:var(--text-soft);
  font-size:.73rem;
  line-height:1.5;
}
.admin-push-cron-note{
  margin-top:14px;
  padding:12px 13px;
  border:1px solid rgba(86,216,255,.14);
  border-radius:15px;
  color:#c9d5ed;
  background:rgba(48,154,205,.07);
  font-size:.69rem;
  line-height:1.5;
}
.admin-push-cron-note code{
  display:inline;
  padding:1px 5px;
  border-radius:6px;
  color:#dff9ff;
  background:rgba(0,0,0,.24);
  overflow-wrap:anywhere;
}

/* V1.2.8 — Configuration Cron Hostinger sans ambiguïté */
.admin-push-cron-alert{
  display:grid;
  grid-template-columns:24px minmax(0,1fr);
  align-items:start;
  gap:10px;
  padding:12px 13px;
  border:1px solid rgba(255,113,136,.22);
  border-radius:16px;
  color:#ffd8df;
  background:rgba(255,113,136,.075);
}
.admin-push-cron-alert>.icon{
  width:21px;
  height:21px;
  margin-top:1px;
  color:#ff94a6;
}
.admin-push-cron-alert p{margin:0}
.admin-push-cron-alert code{
  display:inline;
  padding:1px 5px;
  border:0;
  border-radius:6px;
  color:#fff0f3;
  background:rgba(0,0,0,.24);
  font-size:inherit;
  white-space:normal;
  word-break:break-word;
}
.admin-push-cron-code,
.admin-push-cron-preview{
  display:grid;
  gap:8px;
  padding:12px;
  border:1px solid rgba(86,216,255,.12);
  border-radius:16px;
  background:rgba(6,11,29,.74);
}
.admin-push-cron-code>span,
.admin-push-cron-preview>span{
  color:#8fa4d3;
  font-size:.54rem;
  font-weight:850;
  letter-spacing:.16em;
}
.admin-push-cron-code code,
.admin-push-cron-preview code{
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  font-size:.65rem;
}
.admin-push-cron-code .button{
  justify-self:start;
  min-height:34px;
  margin-top:1px;
}
.admin-push-cron-preview{
  border-color:rgba(88,223,176,.13);
  background:rgba(34,126,100,.055);
}
.admin-push-cron-preview code{color:#c9ffe9}


/* V1.3.3 — Mise à l'honneur Orionis */
.partner-spotlights{margin:24px 0 20px}
.partner-spotlights-head{align-items:flex-end}
.partner-swipe-hint{flex:0 0 auto;color:#7e8caf;font-size:.58rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.partner-rail{display:flex;gap:14px;margin-inline:-2px;padding:2px 2px 8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-inline:contain}
.partner-rail::-webkit-scrollbar{display:none}
.partner-card{position:relative;flex:0 0 min(91%,370px);scroll-snap-align:start;display:flex;flex-direction:column;border:1px solid rgba(132,157,229,.17);border-radius:30px;background:radial-gradient(circle at 88% 8%,rgba(88,166,255,.12),transparent 28%),linear-gradient(158deg,rgba(15,23,58,.99),rgba(5,12,30,.995));box-shadow:0 26px 62px rgba(0,0,0,.3);overflow:hidden}
.partner-card-featured{flex-basis:min(94%,390px)}
.partner-card-media{position:relative;aspect-ratio:16/10;background:#071226;overflow:hidden}
.partner-card-media img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.01)}
.partner-card-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,9,25,.02) 25%,rgba(4,10,28,.22) 58%,rgba(5,12,30,.96) 100%)}
.partner-card-badge,.partner-card-place{position:absolute;z-index:2;display:inline-flex;align-items:center;border:1px solid rgba(255,225,160,.2);backdrop-filter:blur(12px)}
.partner-card-badge{top:14px;left:14px;padding:8px 12px;border-radius:999px;background:rgba(61,39,5,.58);color:#ffe0a0;font-size:.56rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.partner-card-place{right:14px;bottom:14px;padding:7px 10px;border-radius:12px;background:rgba(6,12,31,.7);color:#eef3ff;font-size:.55rem;font-weight:750}
.partner-card-body{padding:17px 17px 19px}
.partner-card-eyebrow{margin:0 0 7px!important;color:#d8ba77!important;font-size:.56rem!important;font-weight:900;letter-spacing:.16em;text-transform:uppercase}
.partner-card h3{margin:0 0 11px;font-size:1.28rem;line-height:1.08;letter-spacing:-.035em}
.partner-card-description{margin:0;color:#adb8d8;font-size:.76rem;line-height:1.58}
.partner-card-highlights{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.partner-card-highlights span{display:inline-flex;align-items:center;padding:7px 10px;border:1px solid rgba(135,164,235,.12);border-radius:999px;background:rgba(255,255,255,.04);color:#dde7ff;font-size:.56rem;font-weight:760}
.partner-events-preview{display:grid;gap:8px;margin-top:16px;padding:13px;border:1px solid rgba(120,153,230,.12);border-radius:20px;background:rgba(4,10,27,.48)}
.partner-events-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:2px}
.partner-events-title span{color:#f2f5ff;font-size:.69rem;font-weight:850}
.partner-events-title small{color:#7582a7;font-size:.5rem}
.partner-events-preview>a{display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:10px;padding:9px 10px;border-radius:15px;background:rgba(255,255,255,.035);color:inherit;text-decoration:none}
.partner-events-preview time{display:grid;place-items:center;align-content:center;min-height:46px;border-radius:13px;background:linear-gradient(145deg,rgba(220,169,71,.2),rgba(120,88,28,.1));color:#ffe0a0}
.partner-events-preview time strong{font-size:1rem;line-height:1}
.partner-events-preview time span{margin-top:3px;font-size:.45rem;font-weight:900;letter-spacing:.1em}
.partner-events-preview>a>span strong{display:block;color:#f4f7ff;font-size:.68rem}
.partner-events-preview>a>span small{display:block;margin-top:3px;color:#8491b3;font-size:.54rem;line-height:1.35}
.partner-card-actions{display:grid;gap:10px;margin-top:16px}
.partner-card-actions .button{justify-content:center}
.partner-main-action .icon{width:17px;height:17px}
.partner-card-note{margin:11px 2px 0!important;color:#6f7c9f!important;font-size:.52rem!important;line-height:1.45!important}
.partner-card-soon{justify-content:center;min-height:520px;padding:24px 20px;background:radial-gradient(circle at 72% 18%,rgba(100,157,255,.16),transparent 29%),linear-gradient(160deg,rgba(12,20,50,.98),rgba(5,12,28,.99))}
.partner-card-soon-orbit{position:relative;width:86px;height:86px;margin-bottom:20px;border:1px solid rgba(151,174,239,.18);border-radius:50%}
.partner-card-soon-orbit::before,.partner-card-soon-orbit::after{content:"";position:absolute;border:1px solid rgba(151,174,239,.13);border-radius:50%}
.partner-card-soon-orbit::before{inset:12px}.partner-card-soon-orbit::after{inset:28px;background:radial-gradient(circle,#8b83ff 0 25%,rgba(82,180,229,.8) 35%,transparent 68%);box-shadow:0 0 28px rgba(95,133,255,.32)}
.partner-card-soon-orbit i{position:absolute;width:7px;height:7px;border-radius:50%;background:#c8d3ff;box-shadow:0 0 12px rgba(178,197,255,.8)}
.partner-card-soon-orbit i:nth-child(1){top:7px;left:45px}.partner-card-soon-orbit i:nth-child(2){right:5px;bottom:27px}.partner-card-soon-orbit i:nth-child(3){left:7px;bottom:18px}
.partner-card-soon .section-kicker{margin-bottom:8px}
.partner-card-soon h3{max-width:260px;margin-bottom:11px;font-size:1.2rem}
.partner-card-soon p{max-width:280px;color:#9da9ca;font-size:.72rem;line-height:1.55}
.partner-card-soon-label{display:inline-flex;width:max-content;margin-top:18px;padding:8px 11px;border:1px dashed rgba(149,173,239,.2);border-radius:999px;color:#8795bb;font-size:.55rem;font-weight:750}
@media(max-width:540px){.partner-card{flex-basis:min(91vw,342px)}.partner-card-featured{flex-basis:min(94vw,365px)}.partner-card-body{padding:15px 15px 17px}.partner-card h3{font-size:1.15rem}.partner-card-description{font-size:.72rem}.partner-card-soon{min-height:500px}}
@media(prefers-reduced-motion:reduce){.partner-card-media img{transform:none}}


/* V1.3.4 — Orionis : programmation officielle du 6 au 8 août 2026 */
.partner-spotlights-head{align-items:flex-start}
.partner-rail{display:block;margin-inline:0;padding:2px 0 8px;overflow:visible;scroll-snap-type:none}
.partner-card-featured{width:100%;max-width:none;flex-basis:auto}
.partner-events-preview time.is-range strong{font-size:.78rem;letter-spacing:-.05em}
@media(max-width:540px){
  .partner-card,.partner-card-featured{width:100%;max-width:none;flex-basis:auto}
  .partner-events-preview time.is-range strong{font-size:.73rem}
}


/* V1.3.8 — identité visuelle et espacement des réglages */
.brand{
  grid-template-columns:52px minmax(0,max-content);
  gap:9px;
}
.brand-mark{
  width:52px;
  height:52px;
  overflow:visible;
}
.brand-mark img{
  width:48px;
  height:48px;
  object-fit:contain;
  transform:translateZ(0);
  filter:drop-shadow(0 6px 13px rgba(91,100,255,.36));
}
.screen-profile .push-device-settings{
  margin-top:24px;
  padding:18px;
  border-radius:24px;
  box-shadow:0 18px 42px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.035);
}
.screen-profile .push-device-settings::before{
  content:"";
  display:block;
  position:absolute;
  inset:-13px 18px auto;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(127,153,236,.18),transparent);
}
.screen-profile .push-device-settings{position:relative}
.screen-profile .push-device-settings-head{gap:14px}
.screen-profile .push-device-settings-actions{margin-top:16px}
@media(max-width:390px){
  .brand{grid-template-columns:46px minmax(0,max-content);gap:7px}
  .brand-mark{width:46px;height:46px}
  .brand-mark img{width:43px;height:43px}
  .screen-profile .push-device-settings{margin-top:22px;padding:16px}
}


/* V1.4.1 — hiérarchie nette de la session et trajectoires rectilignes. */
.planner-resume{
  grid-template-columns:44px minmax(0,1fr);
  column-gap:12px;
  row-gap:12px;
  padding:15px;
}
.planner-resume-icon{
  width:44px;
  height:44px;
  border-radius:15px;
}
.planner-resume-actions{
  grid-column:1/-1;
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  align-items:center;
  justify-items:stretch;
  gap:5px;
  padding-top:1px;
}
.planner-resume .planner-resume-actions .button{
  grid-column:auto;
  min-width:0;
  line-height:1.15;
}
.planner-resume .planner-resume-button{
  width:100%!important;
  min-height:48px;
  padding:10px 16px;
  border-radius:15px;
  font-size:.72rem;
  justify-content:center;
  box-shadow:inset 0 1px rgba(255,255,255,.2),0 10px 24px rgba(72,78,226,.22);
}
.planner-resume-button-icon{
  width:27px;
  height:27px;
  margin:-2px 1px -2px -3px;
  border-radius:9px;
}
.planner-resume-button-icon .icon{width:16px;height:16px}
.planner-resume .planner-cancel-button{
  width:auto!important;
  min-height:34px;
  justify-self:end;
  padding:6px 7px;
  gap:6px;
  border-color:transparent;
  border-radius:10px;
  color:#e7a9b8;
  background:transparent;
  box-shadow:none;
  font-size:.59rem;
  font-weight:760;
}
.planner-cancel-button .icon{width:13px;height:13px;opacity:.72}
.planner-cancel-button:hover,.planner-cancel-button:focus-visible{
  border-color:rgba(255,145,168,.18);
  color:#ffc2cf;
  background:rgba(133,43,72,.1);
}
.planner-cancel-button:active{transform:translateY(1px)}
@media(max-width:390px){
  .planner-resume{padding:14px}
  .planner-resume .planner-resume-button{min-height:46px;font-size:.7rem}
  .planner-resume .planner-cancel-button{justify-self:center}
}

/* Boutons d’installation et d’activation : ciel fixe, étoiles filantes droites. */
.pwa-install-button{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  contain:paint;
  transform:translateZ(0);
  animation:none!important;
}
.pwa-install-button::before{
  content:none!important;
  animation:none!important;
}
.pwa-install-button::after{
  z-index:0;
  animation:none!important;
  opacity:.72;
  background:
    radial-gradient(circle at 18% 24%,rgba(255,255,255,.44) 0 1px,transparent 1.7px),
    radial-gradient(circle at 78% 22%,rgba(233,249,255,.38) 0 1px,transparent 1.7px),
    radial-gradient(circle at 69% 74%,rgba(255,255,255,.3) 0 1px,transparent 1.8px),
    radial-gradient(circle at 36% 78%,rgba(212,240,255,.22) 0 1px,transparent 1.8px);
}
.pwa-install-copy{z-index:4}
.pwa-install-sky{
  z-index:3;
  inset:0;
  overflow:hidden;
  contain:paint;
  border-radius:inherit;
  transform:translateZ(0);
}
.pwa-install-sky::before{content:none!important;animation:none!important}
.pwa-install-sky i{
  position:absolute;
  width:2px;
  height:2px;
  border-radius:50%;
  opacity:.7;
  background:#fff;
  box-shadow:0 0 7px rgba(255,255,255,.82);
  animation:none!important;
  transform:none!important;
}
.pwa-install-sky i::before,.pwa-install-sky i::after{content:none!important}
.pwa-install-sky i:nth-child(1){left:13%;top:26%}
.pwa-install-sky i:nth-child(2){left:31%;top:74%;width:1px;height:1px}
.pwa-install-sky i:nth-child(3){right:14%;top:22%}
.pwa-install-sky i:nth-child(4){right:27%;bottom:18%;width:1px;height:1px}
.pwa-install-sky i:nth-child(5){left:49%;top:17%;width:1px;height:1px}
.pwa-install-sky i:nth-child(6){right:7%;top:58%;width:1px;height:1px}
.pwa-install-sky b{
  --shoot-x:520px;
  --shoot-y:-72px;
  --shoot-angle:-8deg;
  position:absolute;
  left:-108px!important;
  top:72%!important;
  bottom:auto!important;
  width:92px!important;
  height:2px!important;
  border-radius:999px;
  opacity:0;
  background:linear-gradient(90deg,transparent 0%,rgba(116,205,255,.06) 20%,rgba(139,226,255,.44) 68%,rgba(245,255,255,.98) 100%);
  filter:drop-shadow(0 0 5px rgba(130,229,255,.72));
  transform-origin:100% 50%;
  transform:translate3d(0,0,0) rotate(var(--shoot-angle));
  will-change:transform,opacity;
  animation:pwa-straight-shoot 5.2s linear .35s infinite!important;
}
.pwa-install-sky b::before{content:none!important}
.pwa-install-sky b::after{
  content:"";
  position:absolute;
  right:-2px;
  top:50%;
  width:5px;
  height:5px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 0 5px #fff,0 0 12px rgba(118,240,255,.92),0 0 22px rgba(111,133,255,.68);
  transform:translateY(-50%);
}
.pwa-install-sky b:nth-of-type(2){
  --shoot-x:470px;
  --shoot-y:-54px;
  --shoot-angle:-7deg;
  top:88%!important;
  width:68px!important;
  animation-delay:2.95s!important;
  animation-duration:6.1s!important;
}
.pwa-install-sky b:nth-of-type(3){display:none}
.pwa-install-button.is-busy .pwa-install-sky b{animation-play-state:paused!important}
.pwa-install-button.is-busy .pwa-install-icon{animation:pwa-install-spin 1s linear infinite}
.pwa-push-enable-button{width:100%;min-height:52px}
.pwa-push-enable-button .pwa-install-copy{width:100%}
.pwa-push-enable-button .pwa-install-sky b:nth-of-type(1){animation-delay:1.65s!important}
.pwa-push-enable-button .pwa-install-sky b:nth-of-type(2){animation-delay:4.35s!important}

@keyframes pwa-straight-shoot{
  0%,68%{
    opacity:0;
    transform:translate3d(0,0,0) rotate(var(--shoot-angle));
  }
  70%{
    opacity:1;
    transform:translate3d(0,0,0) rotate(var(--shoot-angle));
  }
  96%{
    opacity:1;
    transform:translate3d(var(--shoot-x),var(--shoot-y),0) rotate(var(--shoot-angle));
  }
  100%{
    opacity:0;
    transform:translate3d(var(--shoot-x),var(--shoot-y),0) rotate(var(--shoot-angle));
  }
}

/* Modale PWA : même logique, passage continu sans oscillation. */
.pwa-modal-cosmos b{
  --modal-shoot-x:760px;
  --modal-shoot-y:-150px;
  --modal-shoot-angle:-11deg;
  left:-150px!important;
  right:auto!important;
  top:78%!important;
  bottom:auto!important;
  width:126px!important;
  height:2px!important;
  opacity:0;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(112,205,255,.08) 24%,rgba(158,230,255,.5) 72%,#fff 100%);
  filter:drop-shadow(0 0 7px rgba(117,218,255,.58));
  transform-origin:100% 50%;
  transform:translate3d(0,0,0) rotate(var(--modal-shoot-angle));
  animation:pwa-modal-straight-shoot 8.2s linear 1s infinite!important;
}
.pwa-modal-cosmos b::before{content:none!important}
.pwa-modal-cosmos b::after{
  content:"";
  position:absolute;
  right:-2px;
  top:50%;
  width:5px;
  height:5px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 0 6px #fff,0 0 16px rgba(102,232,255,.86);
  transform:translateY(-50%);
}
.pwa-modal-cosmos b:nth-of-type(2){
  --modal-shoot-x:680px;
  --modal-shoot-y:-104px;
  --modal-shoot-angle:-9deg;
  top:56%!important;
  width:92px!important;
  animation-delay:5.1s!important;
  animation-duration:9.6s!important;
}
@keyframes pwa-modal-straight-shoot{
  0%,72%{
    opacity:0;
    transform:translate3d(0,0,0) rotate(var(--modal-shoot-angle));
  }
  74%{
    opacity:1;
    transform:translate3d(0,0,0) rotate(var(--modal-shoot-angle));
  }
  96%{
    opacity:.9;
    transform:translate3d(var(--modal-shoot-x),var(--modal-shoot-y),0) rotate(var(--modal-shoot-angle));
  }
  100%{
    opacity:0;
    transform:translate3d(var(--modal-shoot-x),var(--modal-shoot-y),0) rotate(var(--modal-shoot-angle));
  }
}

@media(prefers-reduced-motion:reduce){
  .pwa-install-sky b,.pwa-modal-cosmos b{display:none!important;animation:none!important}
}

/* V1.4.2 — bloc d’actions de session compact, aligné et cohérent. */
.planner-resume-actions{
  grid-column:1/-1;
  width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1.32fr) minmax(0,1fr);
  align-items:stretch;
  gap:7px;
  padding:5px;
  border:1px solid rgba(142,159,226,.12);
  border-radius:18px;
  background:linear-gradient(145deg,rgba(4,10,27,.52),rgba(11,18,40,.34));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
.planner-resume .planner-resume-actions .button{
  width:100%!important;
  min-width:0;
  min-height:44px;
  margin:0;
  padding:8px 12px;
  justify-self:stretch;
  justify-content:center;
  gap:8px;
  border-radius:13px;
  line-height:1.1;
  white-space:nowrap;
}
.planner-resume .planner-resume-button{
  border:1px solid rgba(197,202,255,.19);
  color:#fff;
  background:
    linear-gradient(180deg,rgba(255,255,255,.075),transparent 48%),
    linear-gradient(135deg,#8b79ff 0%,#6675f4 58%,#5579e9 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    0 8px 20px rgba(70,76,218,.22);
  font-size:.70rem;
  font-weight:850;
  letter-spacing:-.01em;
}
.planner-resume .planner-resume-button:hover,
.planner-resume .planner-resume-button:focus-visible{
  filter:brightness(1.06);
  border-color:rgba(218,222,255,.28);
}
.planner-resume-button-icon{
  width:28px;
  height:28px;
  margin:0;
  display:grid;
  place-items:center;
  flex:0 0 28px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:9px;
  color:#fff;
  background:rgba(255,255,255,.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.planner-resume-button-icon .icon{
  width:16px;
  height:16px;
}
.planner-resume .planner-cancel-button{
  width:100%!important;
  min-height:44px;
  padding:8px 10px;
  justify-self:stretch;
  border:1px solid rgba(239,130,157,.27);
  border-radius:13px;
  color:#f3b6c4;
  background:
    linear-gradient(180deg,rgba(255,255,255,.025),transparent),
    rgba(102,34,57,.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  font-size:.60rem;
  font-weight:800;
  letter-spacing:-.005em;
}
.planner-resume .planner-cancel-button .icon{
  width:15px;
  height:15px;
  flex:0 0 15px;
  opacity:.82;
}
.planner-resume .planner-cancel-button:hover,
.planner-resume .planner-cancel-button:focus-visible{
  filter:none;
  border-color:rgba(255,149,174,.42);
  color:#ffd0da;
  background:rgba(126,42,69,.17);
}
.planner-resume .planner-resume-actions .button:active{
  transform:translateY(1px) scale(.992);
}
@media(max-width:365px){
  .planner-resume-actions{
    grid-template-columns:1fr;
    gap:6px;
  }
  .planner-resume .planner-resume-actions .button{
    min-height:42px;
  }
  .planner-resume .planner-cancel-button{
    font-size:.61rem;
  }
}
