:root {
    --bg: #eef4f2;
    --surface: #ffffff;
    --surface-strong: #f8fbfa;
    --soft: #e4f1eb;
    --line: #cddbd7;
    --text: #12251f;
    --muted: #60706b;
    --accent: #167658;
    --accent-strong: #0e5c45;
    --blue: #276fbf;
    --red: #d34b44;
    --yellow: #efb14a;
    --purple: #7a5bc7;
    --orange: #e2793d;
    --danger: #b6453f;
    --shadow: 0 24px 70px rgba(20, 44, 37, .16);
    --shadow-soft: 0 12px 34px rgba(20, 44, 37, .1);
}

* {
    box-sizing: border-box;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: Inter, "Segoe UI", Arial, Helvetica, sans-serif;
    color: var(--text);
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .05) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        var(--bg);
    background-size: 72px 72px;
}

a {
    color: inherit;
}

.site-header {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    gap: 18px;
    min-height: 72px;
    padding: 12px 24px;
    background: rgba(255, 255, 255, .9);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(18px);
    box-shadow: 0 10px 34px rgba(18, 37, 31, .06);
}

.site-header.is-console {
    background: rgba(244, 249, 247, .96);
}

.site-header.is-console .brand::after {
    content: "Admin";
    padding: 4px 8px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--accent);
    font-size: 12px;
    font-weight: 900;
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 22px;
    text-decoration: none;
    white-space: nowrap;
}

.brand-mark {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 8px;
    color: #fff;
    background: linear-gradient(135deg, var(--accent), var(--blue));
    box-shadow: 0 12px 22px rgba(22, 118, 88, .22);
}

.brand-mark.is-image {
    overflow: hidden;
    padding: 0;
    background: #071d31;
}

.brand-mark.is-image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.top-nav {
    display: flex;
    align-items: center;
    gap: 4px;
    flex: 1;
    overflow-x: auto;
}

.site-menu-toggle {
    display: none;
    width: 44px;
    height: 44px;
    min-height: 44px;
    padding: 0;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 5px;
    border-color: var(--line);
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.site-menu-toggle span {
    display: block;
    width: 20px;
    height: 2px;
    border-radius: 999px;
    background: var(--text);
    transition: transform .18s ease, opacity .18s ease;
}

.site-header.is-menu-open .site-menu-toggle span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}

.site-header.is-menu-open .site-menu-toggle span:nth-child(2) {
    opacity: 0;
}

.site-header.is-menu-open .site-menu-toggle span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

.top-nav a,
.ghost-link {
    text-decoration: none;
    color: #53645f;
    font-weight: 700;
    padding: 9px 10px;
    border-radius: 8px;
    white-space: nowrap;
}

.top-nav a.active,
.top-nav a:hover,
.ghost-link:hover {
    color: var(--text);
    background: #edf6f2;
}

.account-zone {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--muted);
    font-weight: 700;
}

.account-zone form {
    margin: 0;
}

.button,
button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 14px;
    border: 1px solid var(--accent);
    border-radius: 8px;
    background: linear-gradient(135deg, var(--accent), var(--accent-strong));
    color: #fff;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 12px 26px rgba(22, 118, 88, .2);
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.button:hover,
button:hover {
    transform: translateY(-1px);
    box-shadow: 0 16px 32px rgba(22, 118, 88, .25);
}

.button.secondary,
button.ghost,
.ghost {
    background: #fff;
    color: var(--text);
    border-color: var(--line);
    box-shadow: var(--shadow-soft);
}

.button.warning,
button.warning {
    border-color: #d59732;
    background: linear-gradient(135deg, var(--yellow), #d99231);
    color: var(--text);
}

.button.danger,
button.danger {
    border-color: var(--red);
    background: linear-gradient(135deg, var(--red), var(--danger));
    color: #fff;
}

.button.small {
    min-height: 36px;
    padding: 8px 11px;
}

button.site-menu-toggle {
    padding: 0;
    border-color: var(--line);
    background: #fff;
    color: var(--text);
    box-shadow: var(--shadow-soft);
}

button.site-menu-toggle:hover {
    background: #fff;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[role="button"]:focus-visible {
    outline: 3px solid rgba(35, 111, 196, .62);
    outline-offset: 3px;
}

.skip-link {
    position: fixed;
    z-index: 100000;
    top: 8px;
    left: 8px;
    padding: 10px 14px;
    transform: translateY(-150%);
    border-radius: 8px;
    background: #fff;
    color: #10221d;
    box-shadow: 0 4px 18px rgba(0, 0, 0, .24);
}

.skip-link:focus {
    transform: translateY(0);
}

.language-switcher {
    margin: 0;
}

.language-switcher select {
    min-width: 92px;
    padding: 8px 28px 8px 10px;
    border-radius: 10px;
    font-size: .9rem;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto !important;
    }

    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

/* Import mondial JSON depuis l'administration */
.world-import-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin: 22px 0;
}

.world-import-steps article {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 17px;
    border: 1px solid #ceddd8;
    border-radius: 15px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(29, 66, 56, .07);
}

.world-import-steps article > strong {
    display: grid;
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    place-items: center;
    border-radius: 50%;
    background: #0f765c;
    color: #fff;
    font-size: 1.25rem;
}

.world-import-steps h2 { margin: 0; font-size: 1.1rem; }
.world-import-steps p { margin: 3px 0 0; color: #61736d; }
.world-import-upload { display: grid; grid-template-columns: minmax(250px, .75fr) minmax(400px, 1.25fr); gap: 28px; }
.world-import-upload-form { display: grid; gap: 16px; }
.world-import-upload-form input[type="file"] { padding: 13px; border: 2px dashed #a9c5bc; background: #f7fbf9; }
.world-import-publish-option { align-items: flex-start; padding: 14px; border: 1px solid #efd49c; border-radius: 12px; background: #fff8e8; }
.world-import-publish-option span { display: grid; gap: 3px; }
.world-import-publish-option small { color: #725d2f; }

.world-import-console {
    margin: 24px 0;
    padding: clamp(18px, 3vw, 30px);
    border: 1px solid #c6d9d2;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 14px 38px rgba(29, 66, 56, .1);
}
.world-import-console [hidden] { display: none !important; }

.world-import-console-head,
.world-import-progress-label,
.world-import-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.world-import-console-head h2 { margin: 0 0 3px; overflow-wrap: anywhere; }
.world-import-console-head p { margin: 0; color: #60716c; }
.world-import-progress { height: 18px; margin-top: 24px; overflow: hidden; border-radius: 999px; background: #e4ece9; }
.world-import-progress > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #0e7158, #28ae84); transition: width .25s ease; }
.world-import-progress-label { margin: 8px 0 20px; color: #5c6f69; }
.world-import-progress-label strong { color: #123a2e; font-size: 1.15rem; }
.world-import-batch-tracker { margin: 0 0 20px; padding: 14px 16px; border: 1px solid #bed6ce; border-radius: 12px; background: #f5faf8; }
.world-import-batch-tracker summary { cursor: pointer; color: #143e32; }
.world-import-batch-tracker summary span { margin-left: 8px; color: #5e716b; font-weight: 500; }
.world-import-batch-tracker ol { max-height: 280px; margin: 12px 0 0; padding-left: 24px; overflow: auto; }
.world-import-batch-tracker li { padding: 5px 0; border-bottom: 1px solid #deebe7; color: #435c54; }
.world-import-stats { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.world-import-stats article { padding: 14px; border-radius: 12px; background: #eff6f3; }
.world-import-stats strong { display: block; color: #11382d; font-size: 1.65rem; }
.world-import-stats span { color: #64756f; font-size: .85rem; }
.world-import-actions { justify-content: flex-start; flex-wrap: wrap; margin-top: 18px; }
.world-import-error { margin-top: 18px; }
.world-import-history { margin-top: 24px; }
.world-import-history td.actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.world-import-history td.actions form { margin: 0; }

@media (max-width: 900px) {
    .world-import-steps,
    .world-import-upload { grid-template-columns: 1fr; }
    .world-import-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
    .world-import-steps { grid-template-columns: 1fr; }
    .world-import-console-head,
    .world-import-progress-label { align-items: flex-start; flex-direction: column; }
    .world-import-stats { grid-template-columns: 1fr; }
}

.icon-label-button {
    gap: 8px;
}

.icon-label-button::before {
    content: attr(data-action-icon);
    display: inline-grid;
    place-items: center;
    min-width: 25px;
    height: 25px;
    padding: 0 5px;
    border-radius: 999px;
    background: #eaf4f0;
    color: var(--accent-strong);
    font-size: 10px;
    font-weight: 950;
    line-height: 1;
}

.button:not(.secondary).icon-label-button::before,
button:not(.secondary).icon-label-button::before {
    background: rgba(255, 255, 255, .18);
    color: #fff;
}

.hero {
    position: relative;
    min-height: min(760px, calc(100vh - 72px));
    overflow: hidden;
    display: flex;
    align-items: center;
    padding: 72px 7vw 148px;
    background: #d9ebe4;
}

.hero-map {
    position: absolute;
    inset: 0;
    overflow: hidden;
    background:
        linear-gradient(90deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(135deg, rgba(22, 118, 88, .08), rgba(39, 111, 191, .08)),
        #d9ebe4;
    background-size: 64px 64px, 64px 64px, 100% 100%, 100% 100%;
}

.hero-map .water {
    position: absolute;
    left: -5%;
    right: -5%;
    top: 57%;
    height: 17%;
    background: #acdbe6;
    transform: rotate(-7deg);
    box-shadow: inset 0 10px 28px rgba(39, 111, 191, .15);
}

.road {
    position: absolute;
    display: block;
    width: 80%;
    height: 18px;
    background: #f3c565;
    border: 4px solid rgba(118, 81, 35, .18);
    border-radius: 999px;
    box-shadow: 0 8px 24px rgba(115, 94, 50, .14);
}

.road.r1 {
    top: 28%;
    left: -8%;
    transform: rotate(10deg);
}

.road.r2 {
    top: 70%;
    right: -14%;
    transform: rotate(-13deg);
}

.hero-pin,
.pin,
.map-marker {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 4px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 13px;
    font-weight: 900;
    box-shadow: 0 18px 38px rgba(18, 37, 31, .22);
}

.hero-pin {
    position: absolute;
}

.hp1 { left: 68%; top: 24%; }
.hp2 { left: 55%; top: 48%; background: var(--blue); }
.hp3 { left: 76%; top: 66%; background: var(--yellow); }

.hero-copy {
    position: relative;
    max-width: 760px;
    color: var(--text);
    padding: 8px 0;
}

.hero-copy h1 {
    margin: 0 0 14px;
    font-size: clamp(52px, 9vw, 116px);
    line-height: .9;
    letter-spacing: 0;
    text-wrap: balance;
}

.hero-copy p {
    max-width: 620px;
    font-size: clamp(19px, 3vw, 30px);
    line-height: 1.25;
    margin: 0 0 24px;
    font-weight: 700;
    color: #213b34;
}

.hero-copy .hero-slogan {
    max-width: 680px;
    padding: 12px 16px;
    border-left: 5px solid var(--accent);
    background: rgba(255, 255, 255, .74);
    font-size: 20px;
    line-height: 1.35;
}

.hero-actions,
.filter-row,
.tags,
.actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.compact-actions {
    align-items: center;
    margin: 8px 0 12px;
}

.form-widget-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    justify-content: flex-end;
    padding-top: 12px;
    margin-top: 4px;
    border-top: 1px solid var(--line);
}

.form-widget-actions.is-small {
    justify-content: flex-start;
    padding-top: 8px;
}

.form-widget-actions button,
.form-widget-actions .button {
    min-height: 40px;
}

.compact-actions form {
    margin: 0;
}

.archive-details {
    min-width: 260px;
}

.archive-details summary {
    cursor: pointer;
    font-weight: 800;
    color: var(--accent);
}

.archive-details-body {
    display: grid;
    gap: 6px;
    margin-top: 10px;
    color: var(--muted);
}

.archive-details-body p {
    margin: 0;
}

.archive-details-body strong {
    color: var(--ink);
}

.section {
    max-width: 1180px;
    margin: 0 auto;
    padding: 58px 22px;
}

.section.global-notice-section {
    padding-top: 14px;
    padding-bottom: 0;
}

.section.global-notice-section + .section.global-notice-section {
    padding-top: 10px;
}

.section.global-notice-section + .section {
    padding-top: 24px;
}

.global-notice-section .notice {
    margin: 0;
}

.intro-strip {
    margin-top: -82px;
    position: relative;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    z-index: 1;
}

.page-head {
    position: relative;
    z-index: 3;
}

.section > .page-head + .intro-strip,
.section > .page-head.with-actions + .intro-strip {
    margin-top: 0;
}

.intro-strip + .intro-strip {
    margin-top: 12px;
}

/* Les statistiques des écrans Types/Services suivent un formulaire : elles ne
   doivent pas reprendre le chevauchement décoratif réservé aux pages d'accueil. */
.intro-strip.admin-definition-stats {
    margin-top: 24px;
    clear: both;
}

.admin-definition-widget {
    margin-top: 24px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
    overflow: clip;
}

.admin-definition-widget > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 22px;
    cursor: pointer;
    color: var(--ink);
    list-style: none;
    user-select: none;
}

.admin-definition-widget > summary::-webkit-details-marker { display: none; }
.admin-definition-widget > summary::after { content: 'Afficher'; font-weight: 800; color: var(--primary); }
.admin-definition-widget[open] > summary::after { content: 'Replier'; }
.admin-definition-widget > summary strong { display: block; font-size: clamp(20px, 3vw, 28px); }
.admin-definition-widget > summary small { display: block; margin-top: 4px; color: var(--muted); }
.admin-definition-widget[open] > summary { border-bottom: 1px solid var(--line); }
.admin-definition-widget-body { margin: 0; padding: 22px; }
.admin-definition-widget-body > .form-section { margin: 0; }

.admin-section-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 18px 0 24px;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface);
}

.admin-section-tabs a {
    padding: 11px 16px;
    border-radius: 7px;
    color: var(--ink);
    font-weight: 800;
    text-decoration: none;
}

.admin-section-tabs a:hover,
.admin-section-tabs a:focus-visible,
.admin-section-tabs a.is-active { background: var(--primary); color: #fff; }
.admin-section-tabs .moderation-plus-tab { margin-left: auto; }
.moderation-tab-panel { margin-top: 22px; }

.public-hunt-filter {
    position: relative;
    z-index: 4;
    margin-bottom: 18px;
}

.public-hunt-filter + .intro-strip {
    margin-top: 0;
}

.intro-strip div,
.intro-strip.clickable-stats a,
.feature-grid article,
.steps article,
.place-card,
.side-panel,
.auth-panel,
.review,
.timeline article {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow-soft);
}

.intro-strip div,
.intro-strip.clickable-stats a {
    padding: 20px;
    min-width: 0;
    overflow: hidden;
}

.intro-strip strong {
    display: block;
    max-width: 100%;
    overflow-wrap: anywhere;
    font-size: clamp(24px, 3vw, 30px);
    line-height: 1.1;
}

.intro-strip span,
.muted,
.page-head p,
.place-card p,
.feature-grid p,
.steps p,
.review p {
    color: var(--muted);
}

.split {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr);
    gap: 26px;
    align-items: start;
}

h1,
h2,
h3,
p {
    letter-spacing: 0;
}

h1 {
    font-size: clamp(36px, 7vw, 68px);
    line-height: 1;
    margin: 0 0 12px;
    text-wrap: balance;
}

h2 {
    font-size: 30px;
    margin: 0 0 16px;
}

h3 {
    margin: 0 0 8px;
    font-size: 19px;
}

.lead {
    font-size: 19px;
    line-height: 1.55;
}

.steps {
    display: grid;
    gap: 12px;
}

.steps article,
.feature-grid article {
    padding: 22px;
}

.steps span {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    background: #e7f5ef;
    color: var(--accent);
    font-weight: 900;
    margin-bottom: 10px;
}

.feature-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.member-dashboard {
    display: grid;
    gap: 22px;
}

.member-dashboard-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);
    gap: 18px;
    align-items: stretch;
    padding: clamp(24px, 5vw, 44px);
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .94) 0%, rgba(255, 255, 255, .82) 54%, rgba(228, 241, 235, .72) 100%),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 54px 54px, 54px 54px, auto;
    box-shadow: var(--shadow-soft);
}

.member-command-center {
    position: relative;
    overflow: hidden;
}

.member-command-center::after {
    position: absolute;
    right: clamp(220px, 24vw, 420px);
    bottom: -80px;
    width: min(42vw, 520px);
    height: 240px;
    border: 12px solid rgba(22, 118, 88, .12);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-12deg);
    content: "";
    pointer-events: none;
}

.member-dashboard-copy {
    position: relative;
    z-index: 1;
}

.member-dashboard-hero h1 {
    max-width: 760px;
    margin-bottom: 12px;
    font-size: clamp(44px, 7vw, 84px);
    line-height: .95;
}

.member-dashboard-hero p {
    max-width: 660px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.member-dashboard-panel {
    display: grid;
    gap: 8px;
    align-content: start;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .88);
    box-shadow: 0 18px 42px rgba(18, 37, 31, .1);
}

.member-focus-panel {
    position: relative;
    z-index: 1;
}

.member-dashboard-panel strong {
    font-size: 20px;
}

.member-dashboard-panel a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    font-weight: 900;
    text-decoration: none;
}

.member-dashboard-panel a::after {
    content: ">";
    color: var(--accent);
}

.member-route-preview {
    display: grid;
    grid-template-columns: 20px 1fr 20px 1fr 20px;
    align-items: center;
    gap: 6px;
    min-height: 54px;
    padding: 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .05) 1px, transparent 1px),
        #f5faf7;
    background-size: 30px 30px;
}

.route-stop {
    display: block;
    width: 20px;
    height: 20px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    box-shadow: 0 4px 12px rgba(18, 37, 31, .18);
}

.route-stop.is-middle {
    background: #2770a8;
}

.route-stop.is-end {
    background: #d89419;
}

.route-line {
    height: 3px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(22, 118, 88, .65), rgba(39, 111, 191, .7));
}

.member-workflow-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.member-workflow-strip article {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 6px 12px;
    align-items: center;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    box-shadow: var(--shadow-soft);
}

.member-workflow-strip span {
    grid-row: span 2;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 999px;
    background: #e7f5ef;
    color: var(--accent);
    font-weight: 950;
}

.member-workflow-strip strong,
.member-workflow-strip small {
    min-width: 0;
}

.member-workflow-strip small {
    color: var(--muted);
    font-weight: 750;
}

.member-action-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.member-action-grid article {
    position: relative;
    display: grid;
    gap: 10px;
    align-content: start;
    min-height: 230px;
    padding: 20px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.member-action-grid article::before {
    position: absolute;
    inset: 0 0 auto;
    height: 4px;
    border-radius: 8px 8px 0 0;
    background: linear-gradient(90deg, var(--accent), rgba(39, 111, 191, .8));
    content: "";
}

.member-action-grid article.is-primary {
    border-color: rgba(22, 118, 88, .35);
    background: linear-gradient(135deg, #ffffff, #edf8f3);
}

.member-action-grid h2,
.member-action-grid p {
    margin: 0;
}

.member-action-grid p {
    color: var(--muted);
}

.member-action-icon {
    display: inline-flex;
    width: fit-content;
    min-height: 30px;
    align-items: center;
    padding: 6px 10px;
    border-radius: 999px;
    background: #eaf4ef;
    color: var(--accent-strong);
    font-size: 12px;
    font-weight: 950;
}

.type-logo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    margin-top: 18px;
}

.type-logo-card {
    display: grid;
    grid-template-columns: 68px 1fr;
    gap: 12px;
    align-items: start;
    min-height: 112px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.type-logo-link {
    color: inherit;
    text-decoration: none;
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.type-logo-link:hover,
.type-logo-link:focus-visible,
.type-logo-card.is-selected {
    transform: translateY(-1px);
    border-color: var(--accent);
    box-shadow: 0 14px 30px rgba(18, 37, 31, .16);
}

.type-logo-card.needs-review {
    border-color: #e0b56a;
    background: #fffaf0;
}

.type-logo-card.is-disabled-type {
    border-color: #b7c7c2;
    background: #f3f7f5;
    opacity: .78;
}

.type-logo-card.is-deleted-type {
    border-style: dashed;
    background: #f8f8f8;
    opacity: .62;
}

.type-logo-preview {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    overflow: hidden;
    border: 3px solid #fff;
    border-radius: 12px;
    color: #fff;
    text-decoration: none;
    font-weight: 900;
    box-shadow: 0 10px 22px rgba(18, 37, 31, .16);
}

.type-logo-preview img {
    display: block;
    width: 44px;
    height: 44px;
    object-fit: contain;
}

.type-logo-card h3 {
    margin-bottom: 3px;
}

.type-logo-card p {
    margin: 0 0 8px;
    color: var(--muted);
    font-size: 13px;
}

.type-icon-path {
    overflow-wrap: anywhere;
}

.type-status-actions {
    margin-top: 8px;
}

.type-delete-confirm {
    display: inline-flex;
    gap: 6px;
    align-items: center;
    padding: 6px 8px;
    border: 1px solid #e5b8b4;
    border-radius: 8px;
    background: #fff5f3;
    color: var(--red);
    font-size: 12px;
    font-weight: 850;
}

.clickable-stats a {
    display: block;
    color: inherit;
    text-decoration: none;
}

.clickable-stats a:hover,
.clickable-stats a:focus-visible,
.clickable-stats a.is-active {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px rgba(22, 118, 88, .12);
}

.android-sync-stats a {
    cursor: pointer;
    transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease, color .16s ease;
}

.android-sync-stats a.is-active {
    background: var(--primary);
    color: #fff;
}

.android-sync-stats a.is-active span {
    color: rgba(255, 255, 255, .88);
}

.admin-type-detail {
    margin: 18px 0;
}

.compact-head {
    margin-bottom: 12px;
}

.type-linked-points {
    max-height: 520px;
    overflow: auto;
    padding-right: 4px;
}

.type-action-panel .type-logo-preview {
    margin-bottom: 10px;
}

.type-action-panel .type-status-actions {
    display: grid;
    gap: 10px;
}

.public-journal-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}

.public-journal-card {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.public-journal-cover {
    display: grid;
    place-items: center;
    min-height: 210px;
    padding: 18px;
    color: #fff;
    text-decoration: none;
    background:
        linear-gradient(135deg, rgba(22, 118, 88, .86), rgba(39, 111, 191, .76)),
        linear-gradient(90deg, rgba(255, 255, 255, .14) 1px, transparent 1px),
        linear-gradient(0deg, rgba(255, 255, 255, .14) 1px, transparent 1px);
    background-size: cover, 42px 42px, 42px 42px;
    background-position: center;
    font-size: 28px;
    font-weight: 900;
    text-align: center;
}

.public-journal-cover.has-image {
    background-size: cover;
    background-position: center;
}

.public-journal-body {
    display: grid;
    gap: 12px;
    padding: 16px;
}

.public-trips-page {
    display: grid;
    gap: 22px;
}

.public-trips-hero {
    overflow: hidden;
    background:
        linear-gradient(90deg, rgba(255, 255, 255, .94), rgba(245, 251, 249, .72)),
        linear-gradient(120deg, rgba(22, 118, 88, .12), rgba(39, 111, 191, .1)),
        linear-gradient(90deg, rgba(22, 118, 88, .12) 1px, transparent 1px),
        linear-gradient(0deg, rgba(22, 118, 88, .1) 1px, transparent 1px);
    background-size: auto, auto, 58px 58px, 58px 58px;
}

.public-trip-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.public-trip-card {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.public-trip-map {
    position: relative;
    min-height: 190px;
    overflow: hidden;
    background:
        linear-gradient(135deg, rgba(232, 246, 241, .82), rgba(232, 241, 250, .74)),
        linear-gradient(90deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px);
    background-size: auto, 40px 40px, 40px 40px;
}

.public-trip-map::before,
.public-trip-map::after {
    content: "";
    position: absolute;
    inset: auto -12% 42% -12%;
    height: 7px;
    border-radius: 999px;
    background: rgba(39, 111, 191, .24);
    transform: rotate(-16deg);
}

.public-trip-map::after {
    inset: 48% -8% auto -16%;
    background: rgba(22, 118, 88, .18);
    transform: rotate(23deg);
}

.public-trip-line {
    position: absolute;
    left: 17%;
    top: 68%;
    width: 70%;
    height: 6px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--accent), #276fbf, #d99614);
    transform: rotate(-26deg);
    box-shadow: 0 14px 26px rgba(18, 37, 31, .18);
}

.public-trip-pin {
    position: absolute;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 4px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-weight: 900;
    box-shadow: 0 10px 20px rgba(18, 37, 31, .2);
}

.public-trip-pin.pin-a {
    left: 16%;
    top: 58%;
}

.public-trip-pin.pin-b {
    right: 17%;
    top: 24%;
    background: #276fbf;
}

.public-trip-pin.pin-c {
    left: 48%;
    top: 38%;
    background: #d99614;
}

.public-trip-body {
    display: grid;
    gap: 12px;
    padding: 16px;
}

.public-trip-body h2 {
    margin: 0;
    font-size: 28px;
}

.public-trip-body h2 a {
    color: inherit;
    text-decoration: none;
}

.public-trip-body p {
    margin: 0;
    color: var(--muted);
}

.public-share-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.public-author {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    width: max-content;
    max-width: 100%;
    color: var(--muted);
    font-weight: 900;
    text-decoration: none;
}

.public-avatar {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    flex: 0 0 auto;
    border: 3px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    box-shadow: 0 8px 18px rgba(18, 37, 31, .18);
}

.public-avatar.has-image {
    background-size: cover;
    background-position: center;
}

.account-avatar-editor {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.account-avatar-editor label {
    flex: 1;
    margin: 0;
}

.account-avatar-preview {
    width: 86px;
    height: 86px;
    font-size: 28px;
}

.account-avatar-editor.compact {
    align-items: center;
    padding: 10px;
    background: #fff;
}

.account-avatar-editor.compact .account-avatar-preview {
    width: 64px;
    height: 64px;
    font-size: 20px;
}

.account-avatar-editor.compact p {
    margin: 0;
}

.avatar-preset-field {
    margin: 0 0 16px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.avatar-preset-field legend {
    padding: 0 8px;
    color: var(--text);
    font-weight: 950;
}

.avatar-preset-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 10px;
    margin-top: 12px;
}

.avatar-preset-option {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    cursor: pointer;
}

.avatar-preset-option input {
    width: 18px;
    height: 18px;
}

.avatar-preset-option span:last-child {
    font-weight: 900;
}

.public-share-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.private-journal-line {
    display: grid;
    gap: 4px;
    padding: 10px 0;
    border-top: 1px solid var(--line);
}

.share-disabled-note {
    align-self: center;
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--muted);
    font-weight: 800;
    white-space: normal;
}

.pending-small {
    display: block;
    margin-top: 4px;
    color: #8a5a00;
    font-size: 13px;
    font-weight: 900;
}

.compact-actions {
    margin: -6px 0 14px;
}

.empty-state {
    display: grid;
    gap: 8px;
    padding: 32px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.empty-state p {
    max-width: 680px;
    color: var(--muted);
}

.maintenance-page {
    display: grid;
    min-height: calc(100vh - 190px);
    align-items: center;
}

.maintenance-card {
    display: grid;
    grid-template-columns: minmax(180px, 360px) minmax(0, 1fr);
    gap: clamp(18px, 4vw, 44px);
    align-items: center;
    padding: clamp(18px, 4vw, 42px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(115deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .92) 58%, rgba(228, 241, 235, .72) 100%),
        radial-gradient(circle at 82% 18%, rgba(39, 111, 191, .16), transparent 32%),
        var(--surface);
    box-shadow: var(--shadow);
}

.maintenance-card__media {
    display: grid;
    place-items: center;
}

.maintenance-card__media img {
    display: block;
    width: min(100%, 330px);
    max-height: 330px;
    object-fit: contain;
    border-radius: 22%;
    box-shadow: 0 18px 48px rgba(18, 37, 31, .18);
}

.maintenance-card__body {
    display: grid;
    gap: 14px;
    justify-items: start;
}

.maintenance-card h1 {
    margin: 0;
    max-width: 680px;
    font-size: clamp(34px, 7vw, 68px);
    line-height: .95;
}

.maintenance-card p {
    margin: 0;
    max-width: 620px;
    color: var(--muted);
    font-size: clamp(16px, 2.8vw, 20px);
    line-height: 1.45;
}

.section.compact {
    padding: 22px 0;
}

.admin-mailbox {
    max-width: none;
}

.cron-url {
    display: block;
    max-width: 100%;
    overflow-wrap: anywhere;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #edf6f2;
    color: var(--text);
    font-size: 13px;
    line-height: 1.45;
}

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

.user-card {
    display: grid;
    gap: 14px;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.user-card header {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: flex-start;
}

.status-pill {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.status-pill.active {
    color: var(--accent-strong);
    background: #e4f1eb;
}

.status-pill.warning {
    color: #8a5a00;
    background: #fff2d7;
}

.status-pill.neutral {
    color: #54645f;
    background: #edf3f1;
}

.status-pill.info {
    color: #174a82;
    background: #e3effb;
}

.status-pill.blocked {
    color: var(--danger);
    background: #f7e2df;
}

.admin-user-form {
    display: grid;
    gap: 10px;
}

.admin-user-form label {
    display: grid;
    gap: 6px;
    color: var(--muted);
    font-weight: 800;
}

.inline-action-form {
    display: grid;
    gap: 14px;
    margin-top: 14px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

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

.toggle-line {
    display: flex !important;
    grid-template-columns: none !important;
    align-items: center;
    gap: 10px !important;
    min-height: 48px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
    color: var(--text) !important;
}

.toggle-line input {
    width: auto;
    min-height: auto;
}

.field-hint {
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
}

.map-trip-date-picker {
    display: grid;
    gap: 8px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
}

.map-trip-date-picker strong {
    font-size: 14px;
}

.map-trip-date-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.map-trip-date-buttons button {
    min-height: 40px;
}

.map-trip-date-buttons button.is-active {
    border-color: var(--accent);
    background: var(--accent);
    color: #fff;
}

.subscription-feature-groups {
    display: grid;
    gap: 14px;
}

.subscription-plan-checklist,
.formula-status-board,
.formula-capability-table article {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.subscription-plan-checklist h3,
.formula-capability-table h3 {
    margin: 0;
}

.formula-check-summary,
.formula-status-board {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}

.formula-check-summary {
    display: grid;
    gap: 10px;
}

.formula-check-summary div,
.formula-status-board div {
    display: grid;
    gap: 2px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
}

.formula-check-summary strong,
.formula-status-board strong {
    font-size: 22px;
}

.formula-check-summary span,
.formula-status-board span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}

.formula-check-lines span {
    border-color: var(--line);
}

.formula-check-lines .is-ok {
    background: #eef8f1;
    color: #176338;
}

.formula-check-lines .is-missing {
    background: #fff6e5;
    color: #7b4d00;
}

.subscription-feature-group {
    display: grid;
    gap: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
}

.subscription-feature-group h3 {
    margin: 0;
}

.feature-check-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 10px;
}

.feature-setting {
    display: grid;
    gap: 8px;
    align-self: start;
}

.feature-check {
    display: flex !important;
    grid-template-columns: none !important;
    align-items: center;
    gap: 10px !important;
    min-height: 48px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text) !important;
}

.feature-check input {
    width: auto;
    min-height: auto;
}

.feature-help {
    margin: -2px 4px 0 4px;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.35;
}

.feature-limit-grid {
    display: grid;
    gap: 8px;
    padding: 10px;
    border: 1px dashed var(--line);
    border-radius: 8px;
    background: #fff;
    opacity: .55;
}

.feature-setting.is-enabled .feature-limit-grid,
.feature-setting:has([data-feature-toggle]:checked) .feature-limit-grid {
    opacity: 1;
    border-style: solid;
    background: #f8fbfa;
}

.feature-limit-grid input[readonly] {
    background: #eef4f2;
    color: var(--muted);
}

.feature-limit-field {
    display: grid;
    gap: 5px;
    color: var(--muted);
    font-size: 13px;
    font-weight: 800;
}

.feature-limit-field input {
    min-height: 42px;
    padding: 9px 11px;
}

.advanced-custom-fields {
    display: grid;
    gap: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.advanced-custom-fields h3 {
    margin: 0;
}

.formula-capability-table {
    display: grid;
    gap: 12px;
}

.formula-capability-rows {
    display: grid;
    gap: 8px;
}

.formula-capability-row {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) auto;
    gap: 6px 12px;
    align-items: start;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
}

.formula-capability-row p {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--muted);
}

.formula-capability-row.is-disabled {
    opacity: .72;
}

.account-plan-usage {
    display: grid;
    gap: 12px;
    margin-top: 12px;
}

.plan-usage-head h3 {
    margin: 0;
}

.plan-usage-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
}

.plan-usage-grid article {
    display: grid;
    gap: 6px;
    align-content: start;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.plan-usage-grid article.is-blocked {
    border-color: #e7b9a8;
    background: #fff8f4;
}

.plan-usage-grid article strong {
    line-height: 1.25;
}

.plan-usage-grid article p {
    margin: 0;
    color: var(--muted);
}

.comparison-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.comparison-table {
    width: 100%;
    min-width: 680px;
    border-collapse: collapse;
}

.comparison-table th,
.comparison-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: top;
}

.comparison-table thead th {
    background: var(--surface-strong);
    font-weight: 900;
}

.comparison-table tbody th {
    width: 260px;
}

.comparison-table tbody th span {
    display: block;
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}

.comparison-table tr:last-child th,
.comparison-table tr:last-child td {
    border-bottom: 0;
}

.admin-filter-bar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 12px;
    align-items: end;
    margin-bottom: 18px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.admin-filter-bar label {
    display: grid;
    gap: 6px;
    color: var(--muted);
    font-weight: 800;
}

.point-filter-bar {
    grid-template-columns: repeat(4, minmax(160px, 1fr)) auto auto auto;
}

.point-form {
    display: grid;
    gap: 18px;
}

.form-section {
    display: grid;
    gap: 14px;
    padding: 22px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

/* Administration des rôles */
.role-admin-page {
    display: grid;
    gap: 24px;
}

.role-stats-grid {
    margin: 0;
}

.role-list-section,
.role-permission-section {
    display: grid;
    gap: 16px;
}

.role-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 310px), 1fr));
    gap: 16px;
}

.role-card {
    display: grid;
    align-content: start;
    gap: 14px;
    padding: 20px;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: var(--surface);
    box-shadow: var(--shadow);
}

.role-card.is-inactive {
    opacity: .78;
    border-style: dashed;
}

.role-card-head,
.role-detail-summary,
.role-permission-savebar,
.role-permission-theme > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.role-card h3 {
    margin: 0 0 4px;
}

.role-card code,
.role-detail-page code {
    overflow-wrap: anywhere;
}

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

.role-lock {
    font-size: 1.15rem;
}

.role-card-metrics {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin: 0;
}

.role-card-metrics div {
    padding: 10px;
    border-radius: 12px;
    background: var(--soft);
}

.role-card-metrics dt {
    color: var(--muted);
    font-size: .82rem;
}

.role-card-metrics dd {
    margin: 3px 0 0;
    font-size: 1.25rem;
    font-weight: 900;
}

.role-open-button {
    width: 100%;
    margin-top: auto;
    text-align: center;
}

.role-detail-summary {
    align-items: flex-start;
    padding: 16px 18px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--soft);
}

.role-detail-summary p {
    max-width: 760px;
    margin: 0;
}

.role-management-stack,
.role-permission-themes {
    display: grid;
    gap: 14px;
}

.role-permission-savebar {
    position: sticky;
    top: 86px;
    z-index: 5;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: color-mix(in srgb, var(--surface) 94%, transparent);
    box-shadow: var(--shadow);
}

.role-permission-savebar.is-bottom {
    position: static;
    justify-content: flex-end;
    margin-top: 16px;
}

.role-permission-theme {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: var(--surface);
}

.role-permission-theme > summary {
    cursor: pointer;
    padding: 16px 18px;
    list-style: none;
}

.role-permission-theme > summary::-webkit-details-marker {
    display: none;
}

.role-permission-theme > summary::after {
    content: "Afficher";
    color: var(--primary);
    font-weight: 800;
}

.role-permission-theme[open] > summary::after {
    content: "Replier";
}

.role-permission-theme > summary span:first-child {
    display: grid;
    gap: 3px;
}

.role-permission-theme > summary small,
.role-theme-counts {
    color: var(--muted);
}

.role-permission-theme[open] > summary {
    border-bottom: 1px solid var(--line);
}

.role-secondary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
    gap: 16px;
}

.role-delete-widget {
    border-color: color-mix(in srgb, var(--danger) 55%, var(--line));
}

@media (max-width: 760px) {
    .role-card-head,
    .role-detail-summary,
    .role-permission-savebar,
    .role-permission-theme > summary {
        align-items: stretch;
        flex-direction: column;
    }

    .role-card-metrics {
        grid-template-columns: 1fr;
    }

    .role-permission-savebar {
        position: static;
    }
}

.guide-card {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
}

.location-gate {
    border-color: var(--accent);
    background: #f4fbf7;
}

.location-gate-head {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: flex-start;
}

.location-gate-head h2 {
    margin: 0;
}

.location-gate-tools {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
}

.location-gate-body {
    display: grid;
    gap: 14px;
}

.location-gate p {
    margin: 4px 0 0;
    color: var(--muted);
}

.location-gate-map {
    min-height: min(46vh, 360px);
}

.location-gate.is-map-large .location-gate-map {
    min-height: min(70vh, 620px);
}

.location-gate.is-collapsed .location-gate-body {
    display: none;
}

.point-form.is-location-locked .form-section:not(.location-gate):not(.guide-card) {
    opacity: .48;
}

.guide-card p {
    margin: 4px 0 0;
    color: var(--muted);
}

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

.point-form label {
    display: grid;
    gap: 6px;
    color: var(--muted);
    font-weight: 800;
}

.checkbox-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.checkbox-grid label {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #edf6f2;
    color: var(--text);
}

.checkbox-grid input {
    width: auto;
    min-height: auto;
}

.service-picker {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(220px, 300px);
    gap: 12px;
    align-items: start;
    margin: 12px 0;
}

.service-icon-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
    gap: 8px;
}

.service-icon-option {
    position: relative;
    display: grid;
    place-items: center;
    gap: 7px;
    min-height: 78px;
    padding: 9px 7px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--text);
    cursor: pointer;
}

.service-icon-option input {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: 100%;
    min-height: 100%;
    opacity: 0;
    cursor: pointer;
}

.service-icon-option:hover,
.service-icon-option.is-selected {
    border-color: var(--accent);
    background: #e4f1eb;
}

.service-icon-option.is-selected {
    box-shadow: inset 0 0 0 1px var(--accent);
}

.service-icon-badge,
.service-mini-icon {
    position: relative;
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 6px;
    background: var(--blue);
    color: #fff;
    font-weight: 900;
    line-height: 1;
}

.service-icon-badge {
    width: 34px;
    height: 34px;
    font-size: 11px;
    box-shadow: 0 8px 16px rgba(35, 111, 196, .18);
}

.service-mini-icon {
    width: 24px;
    height: 24px;
    font-size: 9px;
}

.service-sign-badge,
.service-sign-mini {
    border: 1px solid rgba(35, 111, 196, .18);
    background: #fff;
    color: var(--blue);
}

.service-sign-badge img,
.service-sign-mini img,
.point-mini-pin img,
.admin-map-marker > span img,
.roadcache-leaflet-pin img {
    display: block;
    width: 76%;
    height: 76%;
    object-fit: contain;
}

.service-sign-badge img,
.service-sign-mini img {
    max-width: 24px;
    max-height: 24px;
}

.service-icon-option.is-selected .service-icon-badge {
    border-color: var(--accent);
    background: #fff;
}

.service-option-name {
    max-width: 100%;
    color: var(--muted);
    font-size: 11px;
    font-weight: 900;
    line-height: 1.18;
    text-align: center;
    overflow-wrap: anywhere;
}

.service-index-panel,
.service-index-read {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.service-index-panel strong {
    color: var(--text);
}

.service-selected-list,
.service-read-list {
    display: grid;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.service-selected-list li,
.service-read-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text);
    font-weight: 800;
}

.service-icon-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.service-detail-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}

.service-detail-list div {
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.service-detail-list dt {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.service-detail-list dd {
    margin: 4px 0 0;
    font-weight: 900;
}

.admin-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(340px, 440px);
    gap: 18px;
    align-items: stretch;
}

.member-map-layout {
    grid-template-columns: minmax(0, 1fr) minmax(330px, 430px);
    margin-top: 18px;
}

.member-map-scene {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #e8f0ed;
    box-shadow: var(--shadow-soft);
}

.member-map-fullmap {
    max-width: none;
    width: 100%;
    padding: 0;
}

.member-map-fullmap .member-map-scene {
    min-height: calc(100vh - 72px);
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.member-map-scene .member-map-layout {
    display: block;
    margin-top: 0;
}

.member-map-action-dock {
    position: absolute;
    z-index: 540;
    top: 12px;
    right: 12px;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    max-width: min(520px, calc(100% - 640px));
}

.member-map-action-dock .button {
    min-height: 42px;
    padding: 9px 14px;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(12px);
}

.member-map-action-dock .button:not(.secondary) {
    background: var(--accent);
}

.member-map-tools-overlay {
    position: absolute;
    top: 18px;
    left: 74px;
    z-index: 530;
    width: min(560px, calc(100% - 450px));
    margin: 0;
}

.member-map-fullmap .member-map-tools-overlay {
    top: 12px;
    left: 72px;
    width: min(520px, calc(100% - 640px));
    background: rgba(255, 255, 255, .93);
    backdrop-filter: blur(12px);
    box-shadow: var(--shadow-soft);
}

.admin-point-map {
    position: relative;
    min-height: 680px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        #d9ebe4;
    background-size: 58px 58px;
    box-shadow: var(--shadow-soft);
}

.admin-points-map-layout .admin-point-map {
    min-height: 520px;
    height: 58vh;
}

.member-map-layout .admin-point-map {
    min-height: 760px;
    height: min(78vh, 840px);
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.member-map-fullmap .member-map-layout .admin-point-map {
    min-height: calc(100vh - 72px);
    height: calc(100vh - 72px);
}

.member-map-layout .admin-map-panel {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 530;
    width: min(330px, calc(100% - 36px));
    max-height: calc(100% - 36px);
    overflow: auto;
    padding: 0;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(14px);
    box-shadow: 0 18px 50px rgba(18, 45, 39, .16);
    resize: horizontal;
}

.member-map-fullmap .member-map-layout .admin-map-panel {
    top: auto;
    right: 12px;
    bottom: 12px;
    width: min(320px, calc(100% - 24px));
    max-height: min(62vh, calc(100% - 24px));
    resize: both;
}

.map-panel-collapsible {
    display: block;
}

.map-panel-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    cursor: pointer;
    list-style: none;
}

.map-panel-summary::-webkit-details-marker {
    display: none;
}

.map-panel-summary strong {
    display: block;
    color: var(--ink);
    font-size: 24px;
    line-height: 1.05;
}

.map-panel-summary small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-weight: 800;
}

.map-panel-toggle-text {
    flex: 0 0 auto;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--accent);
    font-size: 14px;
    font-weight: 900;
}

.map-panel-toggle-text .is-open,
.map-panel-collapsible[open] .map-panel-toggle-text .is-closed {
    display: none;
}

.map-panel-collapsible[open] .map-panel-toggle-text .is-open {
    display: inline;
}

.map-panel-body {
    display: grid;
    gap: 14px;
    max-height: min(62vh, 620px);
    overflow: auto;
    padding: 0 16px 16px;
    border-top: 1px solid rgba(22, 118, 88, .12);
}

.member-map-fullmap .map-panel-body {
    max-height: min(50vh, 430px);
}

.map-panel-body > p {
    margin: 14px 0 0;
}

.world-leaflet-map {
    position: absolute;
    inset: 0;
    z-index: 1;
}

.admin-zone-data {
    display: none;
}

.admin-zone-panel {
    display: grid;
    gap: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .7);
}

.admin-zone-panel h2 {
    margin: 0;
    font-size: 22px;
}

.admin-zone-panel p {
    margin: 0;
    color: var(--muted);
}

.admin-zone-buttons {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 6px;
}

.admin-zone-buttons a {
    display: grid;
    min-height: 34px;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--ink);
    font-weight: 900;
    text-decoration: none;
}

.admin-zone-buttons a.is-active,
.admin-zone-buttons a:hover {
    border-color: var(--accent);
    background: var(--accent);
    color: #fff;
}

.roadcache-admin-zone {
    cursor: pointer;
}

.is-real-world-map {
    background: #d9ebe4;
}

.is-real-world-map.map-theme-road {
    background: #e7efe9;
}

.is-real-world-map.map-theme-night {
    background: #172626;
}

.is-real-world-map.map-theme-night .leaflet-tile {
    filter: saturate(.92) contrast(1.04);
}

.is-real-world-map.map-theme-night .leaflet-control-container .leaflet-control,
.is-real-world-map.map-theme-night .leaflet-popup-content-wrapper,
.is-real-world-map.map-theme-night .leaflet-popup-tip {
    background: #10201f;
    color: #e9f5ee;
    border-color: rgba(217, 235, 228, .22);
}

.is-real-world-map.map-theme-night .leaflet-control a {
    background: #10201f;
    color: #e9f5ee;
}

.is-real-world-map.map-theme-night .leaflet-control-attribution,
.is-real-world-map.map-theme-night .leaflet-control-attribution a {
    color: #c8d8d0;
}

.is-real-world-map.map-theme-road .leaflet-control-container .leaflet-control {
    border-color: rgba(22, 118, 88, .24);
}

.is-real-world-map .map-water,
.is-real-world-map .map-road,
.is-real-world-map .map-marker,
.is-real-world-map .admin-map-marker,
.is-real-world-map .admin-map-empty,
.mini-map.detail.is-real-world-map .pin,
.journal-map.is-real-world-map > a {
    display: none;
}

.is-real-world-map .map-fab {
    z-index: 500;
}

.roadcache-leaflet-pin {
    display: grid;
    place-items: center;
    border: 0;
    background: transparent !important;
    box-shadow: none;
}

.roadcache-pin-visual {
    position: relative;
    display: grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border: 2px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-weight: 900;
    box-shadow: 0 8px 18px rgba(18, 37, 31, .24);
}

.roadcache-leaflet-pin.marker-with-image .roadcache-pin-visual,
.point-mini-pin.marker-with-image,
.admin-map-marker.marker-with-image > span,
.admin-map-marker > span:has(img) {
    background: #fff !important;
    color: var(--text);
}

.roadcache-leaflet-pin.marker-with-image .roadcache-pin-visual {
    width: 34px;
    height: 34px;
    border-width: 3px;
}

.roadcache-pin-visual .marker-symbol {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    border-radius: inherit;
    overflow: hidden;
    font-size: 8px;
    line-height: 1;
}

.roadcache-leaflet-pin .marker-symbol {
    width: 18px !important;
    height: 18px !important;
    max-width: 18px !important;
    max-height: 18px !important;
}

.roadcache-leaflet-pin.marker-with-image .marker-symbol {
    width: 30px !important;
    height: 30px !important;
    max-width: 30px !important;
    max-height: 30px !important;
}

.roadcache-leaflet-pin .marker-image {
    display: block !important;
    width: 16px !important;
    height: 16px !important;
    max-width: 16px !important;
    max-height: 16px !important;
    object-fit: contain !important;
}

.roadcache-leaflet-pin.marker-with-image .marker-image {
    width: 28px !important;
    height: 28px !important;
    max-width: 28px !important;
    max-height: 28px !important;
}

.roadcache-leaflet-pin.state-free .roadcache-pin-visual,
.point-mini-pin.state-free,
.admin-map-marker.state-free > span {
    border: 2px solid var(--accent);
}

.roadcache-leaflet-pin.state-paid .roadcache-pin-visual,
.point-mini-pin.state-paid,
.admin-map-marker.state-paid > span {
    border: 2px solid var(--orange);
}

.roadcache-leaflet-pin.state-price-unknown .roadcache-pin-visual,
.point-mini-pin.state-price-unknown,
.admin-map-marker.state-price-unknown > span {
    border: 2px solid #fff;
}

.roadcache-leaflet-pin.state-accessible .roadcache-pin-visual,
.point-mini-pin.state-accessible,
.admin-map-marker.state-accessible > span {
    box-shadow: 0 0 0 2px rgba(35, 111, 196, .42), 0 8px 18px rgba(18, 37, 31, .22);
}

.roadcache-leaflet-pin.state-equipped .roadcache-pin-visual::after,
.point-mini-pin.state-equipped::after,
.admin-map-marker.state-equipped > span::after {
    content: "";
    position: absolute;
    right: -2px;
    bottom: -2px;
    width: 6px;
    height: 6px;
    border: 1px solid #fff;
    border-radius: 999px;
    background: var(--accent);
}

.roadcache-leaflet-pin.tone-green .roadcache-pin-visual { background: var(--accent); }
.roadcache-leaflet-pin.tone-blue .roadcache-pin-visual { background: var(--blue); }
.roadcache-leaflet-pin.tone-red .roadcache-pin-visual { background: var(--red); }
.roadcache-leaflet-pin.tone-yellow .roadcache-pin-visual { background: var(--yellow); color: var(--text); }
.roadcache-leaflet-pin.tone-purple .roadcache-pin-visual { background: var(--purple); }
.roadcache-leaflet-pin.tone-orange .roadcache-pin-visual { background: var(--orange); }

.roadcache-fuel-pin {
    display: grid;
    place-items: center;
    border: 0;
    background: transparent !important;
}

.roadcache-fuel-marker {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-width: 58px;
    min-height: 32px;
    padding: 3px 6px 3px 4px;
    border: 2px solid #fff;
    border-radius: 999px;
    color: #fff;
    box-shadow: 0 7px 18px rgba(18, 37, 31, .28);
    font-size: 10px;
    font-weight: 900;
    line-height: 1.05;
    white-space: nowrap;
}

.roadcache-fuel-symbol {
    display: grid;
    place-items: center;
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .94);
    color: #17251f;
    font-size: 14px;
}

.roadcache-fuel-prices {
    display: grid;
    gap: 1px;
    text-align: left;
}

.roadcache-fuel-prices span {
    display: block;
}

.roadcache-fuel-prices b {
    font-size: 8px;
    opacity: .9;
}

.fuel-tone-green { background: #147a58; }
.fuel-tone-orange { background: #d97436; }
.fuel-tone-red { background: #c84643; }
.fuel-tone-gray { background: #68746f; }

.roadcache-fuel-popup {
    display: grid;
    gap: 7px;
    min-width: 220px;
}

.fuel-popup-title {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 15px;
}

.fuel-popup-prices {
    display: grid;
    gap: 5px;
    margin-top: 2px;
}

.fuel-popup-price-row {
    display: grid;
    grid-template-columns: minmax(54px, auto) 1fr auto;
    align-items: center;
    gap: 7px;
    padding: 6px 8px;
    border-radius: 8px;
    color: #fff;
}

.fuel-popup-price-row strong {
    font-size: 14px;
}

.fuel-popup-price-row small {
    color: inherit;
    opacity: .9;
}

.fuel-popup-badge {
    justify-self: start;
    padding: 3px 7px;
    border-radius: 999px;
    background: #eaf4f0;
    color: var(--accent);
    font-size: 11px;
    font-weight: 900;
}

.fuel-popup-source {
    color: var(--muted);
}

.roadcache-selected-pin {
    display: grid;
    place-items: center;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.roadcache-selected-visual {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 26px;
    font-weight: 900;
    line-height: 1;
    box-shadow: 0 16px 34px rgba(18, 37, 31, .3);
}

.map-choice-popup {
    display: grid;
    gap: 10px;
    min-width: 190px;
    color: var(--text);
}

.map-choice-actions {
    display: grid;
    gap: 8px;
}

.map-choice-actions .button {
    width: 100%;
    justify-content: center;
}

.roadcache-point-popup .leaflet-popup-content {
    margin: 10px;
}

.map-point-popup-card {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 10px;
    min-width: 220px;
    color: var(--text);
}

.map-point-popup-visual {
    width: 64px;
    height: 64px;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--line);
    background: #f4faf7;
}

.map-popup-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.map-popup-logo {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    color: var(--accent);
    font-size: 18px;
    font-weight: 950;
}

.map-popup-logo img {
    width: 42px;
    height: 42px;
    object-fit: contain;
}

.map-point-popup-copy {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.map-point-popup-copy h3,
.map-point-popup-copy p {
    margin: 0;
}

.map-point-popup-copy h3 {
    font-size: 17px;
    line-height: 1.15;
}

.map-point-popup-copy p {
    color: var(--muted);
    font-size: 13px;
    font-weight: 800;
}

.map-point-popup-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.map-point-popup-meta span {
    padding: 3px 6px;
    border-radius: 999px;
    background: #edf6f2;
    font-size: 11px;
    font-weight: 850;
}

.map-point-popup-copy .button {
    min-height: 34px;
    padding: 7px 10px;
    justify-content: center;
}

.map-point-popup-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
}

.map-point-popup-actions .button {
    width: 100%;
}

.admin-map-panel {
    display: grid;
    align-content: start;
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.map-panel-search {
    display: grid;
    gap: 6px;
    margin: 0;
    color: var(--muted);
    font-weight: 900;
}

.map-panel-search input {
    min-height: 42px;
}

.map-panel-routes {
    display: grid;
    gap: 8px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f6faf8;
}

.map-panel-routes strong {
    color: var(--ink);
}

.map-panel-routes a {
    color: var(--accent);
    font-weight: 900;
    text-decoration: none;
}

.map-panel-routes a:hover {
    text-decoration: underline;
}

.point-live-info-box,
.journal-gps-tracks,
.journal-comments {
    display: grid;
    gap: 14px;
}

.live-info-list {
    display: grid;
    gap: 10px;
}

.live-info-list article {
    display: grid;
    grid-template-columns: 42px 1fr;
    gap: 10px;
    align-items: start;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.live-info-list article > span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: #eaf4f0;
    color: var(--accent);
    font-weight: 900;
}

.live-info-list p,
.live-info-list small {
    margin: 4px 0 0;
}

.point-contribution-details {
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.point-contribution-details summary {
    padding: 12px;
    font-weight: 900;
    cursor: pointer;
}

.point-contribution-details form {
    padding: 0 12px 12px;
}

.journal-replay-actions {
    margin: 12px 0 8px;
}

.compact-filter-bar {
    display: grid;
    grid-template-columns: 1fr;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.point-panel-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 10px;
    max-height: 360px;
    overflow: auto;
    padding-right: 2px;
}

.member-map-layout .point-panel-list {
    grid-template-columns: 1fr;
    max-height: min(58vh, 620px);
}

.member-map-fullmap .member-map-layout .point-panel-list {
    max-height: min(42vh, 360px);
}

.point-list-card {
    display: grid;
    grid-template-columns: 42px 1fr;
    gap: 10px;
    align-items: start;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.point-list-card[data-href] {
    cursor: pointer;
}

.point-list-card[data-href]:hover {
    background: #edf6f2;
}

.point-list-card strong,
.point-list-card small {
    display: block;
}

.point-list-card small {
    margin-top: 4px;
    color: var(--muted);
}

.point-mini-pin,
.admin-map-marker > span {
    position: relative;
    display: grid;
    place-items: center;
    width: 30px;
    min-width: 30px;
    height: 30px;
    border-radius: 999px;
    color: #fff;
    font-weight: 900;
    font-size: 10px;
    box-shadow: 0 8px 16px rgba(18, 37, 31, .16);
}

.admin-map-marker {
    position: absolute;
    z-index: 3;
    display: grid;
    gap: 6px;
    justify-items: center;
    transform: translate(-50%, -50%);
    color: var(--text);
    text-decoration: none;
}

.admin-map-marker strong {
    max-width: 160px;
    padding: 5px 8px;
    border: 1px solid rgba(18, 37, 31, .12);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: 0 6px 18px rgba(18, 37, 31, .1);
    font-size: 12px;
    text-align: center;
}

.tone-green,
.tone-green > span,
.point-mini-pin.tone-green {
    background: var(--accent);
}

.tone-blue,
.tone-blue > span,
.point-mini-pin.tone-blue {
    background: var(--blue);
}

.tone-red,
.tone-red > span,
.point-mini-pin.tone-red {
    background: var(--red);
}

.restriction-marker .roadcache-pin-visual,
.admin-map-marker.restriction-marker > span,
.restriction-filter-option .map-category-letter {
    background: var(--red);
    color: #fff;
}

.tone-yellow,
.tone-yellow > span,
.point-mini-pin.tone-yellow {
    background: var(--yellow);
    color: var(--text);
}

.tone-purple,
.tone-purple > span,
.point-mini-pin.tone-purple {
    background: var(--purple);
}

.tone-orange,
.tone-orange > span,
.point-mini-pin.tone-orange {
    background: var(--orange);
}

.admin-map-marker.state-to-verify > span,
.point-mini-pin.state-to-verify,
.point-hero-card.state-to-verify .point-hero-icon {
    outline: 4px solid rgba(245, 158, 11, .34);
}

.admin-map-marker.state-to-verify strong::after {
    content: "A verifier";
    display: block;
    margin-top: 2px;
    color: #9a5b00;
    font-size: 10px;
    font-weight: 900;
}

.admin-map-marker.state-closed > span,
.admin-map-marker.state-disabled > span,
.point-mini-pin.state-closed,
.point-mini-pin.state-disabled,
.point-hero-card.state-closed .point-hero-icon,
.point-hero-card.state-disabled .point-hero-icon {
    filter: grayscale(1);
    opacity: .72;
}

.admin-map-marker.state-closed strong::after,
.admin-map-marker.state-disabled strong::after {
    content: "Indisponible";
    display: block;
    margin-top: 2px;
    color: #8a2f28;
    font-size: 10px;
    font-weight: 900;
}

.admin-map-marker.state-problem > span,
.point-mini-pin.state-problem,
.point-hero-card.state-problem .point-hero-icon {
    box-shadow: 0 0 0 4px rgba(209, 73, 65, .2), 0 8px 16px rgba(18, 37, 31, .16);
}

.point-list-card:has(.state-to-verify) {
    border-left: 4px solid #d59732;
    background: #fffaf0;
}

.point-list-card:has(.state-closed),
.point-list-card:has(.state-disabled) {
    border-left: 4px solid #8fa09b;
    background: #f3f7f5;
}

.point-list-card:has(.state-problem) {
    border-left: 4px solid var(--red);
    background: #fff5f3;
}

.point-list-card.is-possible-duplicate,
.point-list-card:has(.state-duplicate) {
    border-left: 4px solid var(--purple);
    background: #f6f1fb;
}

.map-state-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    align-items: center;
}

.map-state-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 28px;
    padding: 4px 9px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: #fff;
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
}

.map-state-chip::before {
    content: "";
    width: 9px;
    height: 9px;
    border-radius: 999px;
    background: var(--accent);
}

.map-state-chip.is-public::before { background: var(--accent); }
.map-state-chip.is-review::before { background: #d59732; }
.map-state-chip.is-closed::before { background: #8fa09b; }
.map-state-chip.is-duplicate::before { background: var(--purple); }

.data-period-form .actions {
    align-items: end;
}

.data-period-form {
    position: relative;
    z-index: 1;
    margin-bottom: 18px;
}

.data-period-form .actions {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 12px;
}

.data-period-form label {
    min-width: 170px;
}

.data-health-quick-stats {
    position: relative;
    z-index: 0;
    clear: both;
    margin-top: 18px;
    margin-bottom: 16px;
}

.data-period-form + .data-health-quick-stats {
    margin-top: 18px;
}

.data-health-quick-stats div,
.data-health-quick-stats a {
    min-height: 92px;
    align-content: center;
}

.data-health-period-cards {
    margin: 18px 0;
}

.data-health-period-cards article p strong {
    font-size: clamp(24px, 3vw, 34px);
}

.data-chart-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 14px;
}

.data-chart-card {
    display: grid;
    gap: 10px;
    min-width: 0;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.data-chart-card h3,
.data-chart-card p {
    margin: 0;
}

.data-chart-bars {
    display: flex;
    align-items: end;
    gap: 4px;
    min-height: 180px;
    padding: 12px 10px 8px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        #fff;
    background-size: 100% 36px;
    overflow-x: auto;
}

.data-chart-bar {
    flex: 1 0 10px;
    min-width: 8px;
    height: var(--bar-height, 4%);
    border-radius: 5px 5px 2px 2px;
    background: linear-gradient(180deg, var(--accent), var(--accent-strong));
}

.data-chart-bar.is-blue {
    background: linear-gradient(180deg, var(--blue), #174a82);
}

.data-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.data-chart-legend span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
}

.data-chart-legend span::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: var(--accent);
}

.map-fab {
    position: absolute;
    right: 18px;
    bottom: 18px;
    z-index: 5;
    width: 56px;
    min-height: 56px;
    padding: 0;
    border-radius: 999px;
    font-size: 30px;
    line-height: 1;
    box-shadow: var(--shadow);
}

.admin-map-empty {
    position: absolute;
    inset: 50% auto auto 50%;
    display: grid;
    gap: 6px;
    min-width: min(320px, calc(100% - 44px));
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    color: var(--muted);
    text-align: center;
    transform: translate(-50%, -50%);
}

.admin-map-empty strong {
    color: var(--text);
}

.small-empty {
    padding: 18px;
    box-shadow: none;
}

.modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(18, 37, 31, .48);
    backdrop-filter: blur(8px);
}

body.modal-open .member-map-tools-overlay,
body.modal-open .member-map-layout .admin-map-panel,
body.modal-open .member-map-action-dock,
body.modal-open .public-map-controls-overlay,
body.modal-open .public-map-cta {
    z-index: 1;
}

.modal-backdrop[hidden] {
    display: none;
}

.modal-card {
    width: min(960px, 100%);
    max-height: min(92vh, 940px);
    overflow: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow);
}

.modal-head {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 14px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--line);
    background: rgba(255, 255, 255, .96);
    backdrop-filter: blur(12px);
}

.modal-head h2 {
    margin: 2px 0 0;
}

.eyebrow {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.icon-button {
    display: grid;
    place-items: center;
    width: 40px;
    min-height: 40px;
    padding: 0;
    border-radius: 999px;
    background: var(--soft);
    color: var(--text);
}

.modal-point-form {
    padding: 18px;
}

.modal-point-form .form-section {
    box-shadow: none;
}

.question-system {
    gap: 16px;
}

.question-panel {
    display: grid;
    gap: 12px;
}

.question-panel h4 {
    margin: 0;
}

.question-panel.is-hidden {
    display: none;
}

.compact-checkboxes {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.wizard-body {
    display: grid;
    gap: 18px;
    padding: 18px;
}

.wizard-progress {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #edf6f2;
    color: var(--muted);
}

.wizard-progress strong {
    color: var(--text);
}

.wizard-single-stage {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, 320px);
    gap: 16px;
    align-items: start;
}

.wizard-question-card,
.wizard-summary {
    display: grid;
    gap: 14px;
    min-height: 430px;
    padding: 22px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.wizard-question-card h3,
.wizard-summary h3 {
    margin: 0;
}

.wizard-question-card p {
    margin: 0;
    color: var(--muted);
}

.wizard-control {
    display: grid;
    gap: 12px;
}

.wizard-answer-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.wizard-answer-options.dense {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    max-height: min(54vh, 560px);
    overflow: auto;
    padding-right: 4px;
}

.wizard-answer-options.multi {
    grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
}

.wizard-answer,
.wizard-check {
    display: grid;
    gap: 6px;
    justify-items: start;
    min-height: 82px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    border-color: var(--line);
    background: #f8fbfa;
    color: var(--text);
    text-align: left;
}

.wizard-answer:hover,
.wizard-check:hover {
    border-color: var(--accent);
    background: #e4f1eb;
}

.wizard-answer span,
.wizard-check span {
    color: var(--muted);
    font-size: 13px;
}

.wizard-answer-options.dense .wizard-answer {
    min-height: 76px;
    padding: 12px;
}

.wizard-answer-options.dense .wizard-answer strong {
    overflow-wrap: anywhere;
}

.wizard-check {
    grid-template-columns: auto 1fr;
    align-items: center;
    min-height: 58px;
}

.wizard-check input {
    width: auto;
    min-height: auto;
}

.wizard-check.service-icon-option {
    grid-template-columns: 1fr;
    justify-items: center;
    min-height: 88px;
    padding: 9px 7px;
}

.wizard-check.service-icon-option input {
    position: absolute;
    width: 100%;
    min-height: 100%;
}

.wizard-check.service-icon-option .service-icon-badge {
    color: #fff;
    font-size: 11px;
}

.wizard-check.service-icon-option .service-option-name {
    color: var(--muted);
    font-size: 11px;
}

.wizard-field {
    display: grid;
    gap: 8px;
}

.wizard-inline-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.wizard-inline-fields label {
    display: grid;
    gap: 8px;
    color: var(--muted);
    font-weight: 800;
}

.wizard-suggestions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.suggestion-chip {
    min-height: 34px;
    padding: 7px 10px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-weight: 800;
}

.suggestion-chip:hover {
    border-color: var(--accent);
    background: #d9ebe4;
}

.wizard-gps-tools {
    display: grid;
    gap: 10px;
}

.wizard-gps-map {
    position: relative;
    min-height: 170px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    cursor: grab;
    touch-action: none;
    background: #d9ebe4;
}

.real-leaflet-map {
    position: absolute;
    inset: 0;
    z-index: 2;
}

.wizard-gps-map.is-real-map {
    cursor: default;
    touch-action: auto;
}

.wizard-gps-map.is-real-map .map-pan-layer,
.wizard-gps-map.is-real-map > strong,
.wizard-gps-map.is-real-map .map-zoom-controls {
    display: none;
}

.wizard-gps-map .leaflet-container,
.real-leaflet-map {
    font: inherit;
}

.wizard-gps-map.is-dragging {
    cursor: grabbing;
}

.map-pan-layer {
    position: absolute;
    inset: 0;
    z-index: 1;
    transform-origin: 0 0;
    background:
        linear-gradient(90deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        #d9ebe4;
    background-size: 38px 38px;
    will-change: transform;
}

.map-pan-layer > span {
    position: absolute;
    left: -8%;
    top: 58%;
    width: 118%;
    height: 34px;
    background: #acdbe6;
    transform: rotate(-7deg);
}

.wizard-gps-map strong {
    position: absolute;
    z-index: 3;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 999px;
    background: var(--red);
    color: #fff;
    transform: translate(-50%, -50%);
    box-shadow: 0 10px 22px rgba(18, 37, 31, .2);
}

.map-zoom-controls {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 4;
    display: grid;
    gap: 6px;
}

.map-zoom-controls button {
    display: grid;
    place-items: center;
    width: 34px;
    min-height: 34px;
    padding: 0;
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    border-color: var(--line);
    box-shadow: 0 8px 18px rgba(18, 37, 31, .14);
    font-size: 18px;
    line-height: 1;
}

.wizard-summary-list {
    display: grid;
    gap: 10px;
    margin: 0;
}

.wizard-summary-list div {
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
}

.wizard-summary-list dt {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.wizard-summary-list dd {
    margin: 3px 0 0;
    font-weight: 800;
}

.wizard-summary-empty,
.wizard-final span {
    color: var(--muted);
}

.wizard-final {
    display: grid;
    gap: 8px;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #edf6f2;
}

.nearby-point-list {
    display: grid;
    gap: 12px;
}

.nearby-point-card {
    display: grid;
    gap: 8px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.nearby-point-card span {
    color: var(--muted);
}

.nearby-map-section {
    margin-bottom: 18px;
}

.nearby-toggle-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 18px;
}

.nearby-toggle-panel p {
    margin-bottom: 0;
}

.nearby-contact-map,
.nearby-contact-map.is-real-world-map {
    min-height: 420px;
    height: min(58vh, 620px);
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
    background: #d9ebe4;
    box-shadow: var(--shadow-soft);
}

.nearby-contact-leaflet-pin {
    display: grid;
    place-items: center;
}

.nearby-contact-visual {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: var(--blue);
    color: #fff;
    font-size: 11px;
    font-weight: 900;
    box-shadow: 0 8px 18px rgba(8, 29, 23, .26);
}

.nearby-contact-leaflet-pin.is-self .nearby-contact-visual {
    width: 34px;
    height: 34px;
    background: var(--accent);
}

.nearby-contact-page {
    display: grid;
    gap: 18px;
}

.nearby-contact-fullmap {
    max-width: none;
    width: 100%;
    padding: 0;
}

.nearby-contact-page .notice {
    max-width: 1180px;
    margin: 14px auto 0;
}

.nearby-contact-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr);
    gap: 28px;
    align-items: center;
    padding: clamp(24px, 4vw, 46px);
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
    background:
        linear-gradient(90deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .9) 48%, rgba(219, 238, 244, .72) 100%),
        radial-gradient(circle at 82% 18%, rgba(48, 126, 195, .2), transparent 28%),
        linear-gradient(135deg, rgba(20, 125, 92, .12), rgba(255, 255, 255, .65));
    box-shadow: var(--shadow-soft);
}

.nearby-contact-hero::after {
    content: "";
    position: absolute;
    inset: auto 0 -70px 32%;
    height: 180px;
    border: 14px solid rgba(20, 125, 92, .1);
    border-left-color: transparent;
    border-bottom: 0;
    border-radius: 50% 50% 0 0;
    pointer-events: none;
}

.nearby-contact-hero h1 {
    max-width: 780px;
    margin: 8px 0 12px;
    font-size: clamp(42px, 6vw, 86px);
    line-height: .96;
}

.nearby-contact-hero p {
    max-width: 760px;
    color: var(--muted);
    font-size: clamp(18px, 2vw, 24px);
}

.nearby-contact-toggle {
    position: static;
    width: 100%;
    display: grid;
    gap: 6px;
    padding: 9px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: var(--shadow-soft);
}

.nearby-contact-top-menu {
    position: absolute;
    z-index: 530;
    top: 12px;
    right: 12px;
    width: min(250px, calc(100% - 24px));
}

.nearby-contact-top-menu > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 42px;
    padding: 9px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
}

.nearby-contact-top-menu > summary::-webkit-details-marker {
    display: none;
}

.nearby-contact-top-menu > summary strong {
    display: grid;
    min-width: 28px;
    min-height: 28px;
    place-items: center;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 13px;
}

.nearby-contact-top-menu[open] > summary {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
    background: var(--accent);
    color: #fff;
}

.nearby-contact-top-menu[open] > summary strong {
    background: #fff;
    color: var(--accent);
}

.nearby-contact-top-body {
    display: grid;
    gap: 10px;
    max-height: min(66vh, 560px);
    overflow: auto;
    padding: 10px;
    border: 1px solid var(--line);
    border-top: 0;
    border-radius: 0 0 8px 8px;
    background: rgba(255, 255, 255, .96);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(12px);
}

.nearby-contact-toggle span,
.nearby-contact-toggle strong {
    display: block;
}

.nearby-contact-toggle span {
    color: var(--muted);
    font-weight: 900;
    text-transform: uppercase;
    font-size: 11px;
}

.nearby-contact-toggle strong {
    font-size: 15px;
}

.nearby-contact-stats {
    position: absolute;
    z-index: 510;
    left: 18px;
    right: 18px;
    bottom: 14px;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
}

.nearby-contact-stats div {
    min-height: 66px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(10px);
}

.nearby-contact-stats strong,
.nearby-contact-stats span {
    display: block;
}

.nearby-contact-stats strong {
    font-size: 22px;
    line-height: 1;
}

.nearby-contact-stats span {
    margin-top: 8px;
    color: var(--muted);
}

.nearby-contact-map-card {
    position: relative;
    display: grid;
    min-height: calc(100vh - 72px);
    border: 0;
    border-radius: 0;
    overflow: hidden;
    background: #d9ebe4;
    box-shadow: var(--shadow-soft);
}

.nearby-contact-map-head {
    position: absolute;
    z-index: 500;
    top: 12px;
    left: 72px;
    right: auto;
    width: min(390px, calc(100% - 350px));
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(12px);
}

.nearby-contact-map-head h2 {
    margin-bottom: 4px;
    font-size: 30px;
}

.nearby-contact-map-head h1 {
    margin: 2px 0;
    font-size: clamp(24px, 2.7vw, 34px);
    line-height: 1;
}

.nearby-contact-map-head p {
    margin: 0;
    color: var(--muted);
    font-weight: 800;
    font-size: 13px;
    line-height: 1.35;
}

.nearby-contact-page .nearby-contact-map,
.nearby-contact-page .nearby-contact-map.is-real-world-map {
    min-height: calc(100vh - 72px);
    height: calc(100vh - 72px);
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.nearby-contact-menu {
    position: absolute;
    z-index: 520;
    right: 12px;
    bottom: 12px;
    width: min(320px, calc(100% - 24px));
}

.nearby-contact-menu > summary,
.nearby-message-details > summary {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
}

.nearby-contact-menu > summary::-webkit-details-marker,
.nearby-message-details > summary::-webkit-details-marker {
    display: none;
}

.nearby-contact-menu[open] > summary {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
    background: var(--accent);
    color: #fff;
}

.nearby-contact-menu-body {
    display: grid;
    gap: 10px;
    max-height: min(58vh, 460px);
    overflow: auto;
    padding: 12px;
    border: 1px solid var(--line);
    border-top: 0;
    border-radius: 0 0 8px 8px;
    background: rgba(255, 255, 255, .96);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(12px);
}

.nearby-contact-menu-lines {
    display: grid;
    gap: 8px;
}

.nearby-contact-menu-lines p {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    margin: 0;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--line);
}

.nearby-contact-menu-lines strong {
    color: var(--muted);
}

.nearby-contact-menu-lines span {
    font-weight: 900;
}

.nearby-compact-form {
    display: grid;
    gap: 10px;
}

.nearby-compact-form label {
    display: grid;
    gap: 5px;
    color: var(--muted);
    font-weight: 900;
}

.nearby-compact-form input,
.nearby-compact-form textarea {
    width: 100%;
}

.nearby-message-details {
    display: grid;
    gap: 10px;
}

.nearby-message-details[open] > summary {
    background: #edf6f2;
}

.nearby-contact-safe {
    margin: 0;
    color: var(--muted);
    font-weight: 800;
    line-height: 1.4;
}

.nearby-contact-workspace {
    max-width: 1180px;
    width: calc(100% - 44px);
    margin: 24px auto 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(260px, .65fr);
    gap: 18px;
    align-items: start;
}

.nearby-contact-panel,
.nearby-contact-rules,
.nearby-message-board {
    padding: 22px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.nearby-contact-panel {
    display: grid;
    gap: 14px;
}

.nearby-contact-panel .point-form,
.nearby-contact-message-panel .point-form {
    display: grid;
    gap: 14px;
}

.nearby-contact-rules {
    position: sticky;
    top: 96px;
}

.nearby-contact-rules p {
    color: var(--muted);
}

.nearby-message-board {
    max-width: 1180px;
    width: calc(100% - 44px);
    margin: 0 auto 32px;
    display: grid;
    gap: 18px;
}

.nearby-message-board > .section-head-row > span {
    color: var(--muted);
    font-weight: 900;
}

.nearby-message-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 18px;
}

.nearby-message-grid h3 {
    margin-bottom: 12px;
}

.nearby-thread-card {
    display: grid;
    gap: 8px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.nearby-thread-card.is-highlighted {
    border-left: 4px solid var(--accent);
    background: #f1faf6;
}

.nearby-alert-card {
    border-color: rgba(220, 38, 38, .35);
    border-left: 5px solid #dc2626;
    background: linear-gradient(135deg, #fff7ed, #fff);
    box-shadow: 0 14px 34px rgba(127, 29, 29, .1);
}

.nearby-alert-card h4 {
    color: #7f1d1d;
}

.nearby-private-contact-form {
    padding: 10px;
    border: 1px solid rgba(220, 38, 38, .22);
    border-radius: 8px;
    background: rgba(255, 255, 255, .78);
}

.nearby-alert-details > summary {
    color: #991b1b;
}

.nearby-alert-form {
    border-left: 4px solid #dc2626;
}

.nearby-contact-inbox {
    display: grid;
    gap: 10px;
}

.nearby-contact-inbox h3 {
    margin: 4px 0 0;
    font-size: 16px;
}

.nearby-thread-card + .nearby-thread-card {
    margin-top: 12px;
}

.nearby-thread-card time {
    color: var(--muted);
    font-weight: 800;
}

.nearby-thread-card h4 {
    margin: 0;
    font-size: 21px;
}

.nearby-reply-form {
    display: grid;
    gap: 10px;
}

@media (max-width: 1080px) {
    .member-map-action-dock {
        max-width: min(360px, calc(100% - 430px));
    }

    .member-map-fullmap .member-map-tools-overlay {
        width: min(430px, calc(100% - 430px));
    }

    .nearby-contact-map-head {
        width: min(360px, calc(100% - 330px));
    }

    .nearby-contact-top-menu {
        width: 230px;
    }

    .nearby-contact-stats {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .nearby-contact-workspace,
    .nearby-message-grid {
        grid-template-columns: 1fr;
    }

    .nearby-contact-rules {
        position: static;
    }
}


@media (max-width: 1180px) and (min-width: 821px) {
    .android-release-quick__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 820px) {
    .member-map-action-dock {
        top: auto;
        right: 10px;
        bottom: 60px;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: min(300px, calc(100% - 20px));
        max-width: none;
    }

    .member-map-action-dock .button {
        min-height: 38px;
        padding: 8px 10px;
        font-size: 13px;
    }

    .member-map-fullmap .member-map-tools-overlay {
        left: 66px;
        width: calc(100% - 84px);
    }

    .member-map-fullmap .member-map-layout .admin-map-panel {
        right: 10px;
        bottom: 10px;
        width: min(290px, calc(100% - 20px));
        max-height: 52vh;
    }

    .nearby-contact-map-head {
        width: calc(100% - 314px);
        right: auto;
        left: 66px;
    }

    .nearby-contact-top-menu {
        top: auto;
        right: 14px;
        bottom: 64px;
        width: min(230px, calc(100% - 28px));
    }

    .nearby-contact-stats {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        left: 14px;
        right: 14px;
    }

    .nearby-contact-menu {
        right: 14px;
        bottom: 14px;
        width: min(300px, calc(100% - 28px));
    }
}

@media (max-width: 720px) {
    .member-map-fullmap .member-map-scene,
    .member-map-fullmap .member-map-layout .admin-point-map {
        min-height: calc(100svh - 72px);
        height: calc(100svh - 72px);
    }

    .member-map-fullmap .map-load-summary {
        padding: 9px 10px;
    }

    .member-map-fullmap .map-load-summary strong {
        font-size: 18px;
    }

    .member-map-fullmap .map-load-summary small {
        font-size: 11px;
    }

    .member-map-fullmap .map-load-toggle-text,
    .member-map-fullmap .map-panel-toggle-text {
        padding: 7px 9px;
        font-size: 12px;
    }

    .member-map-action-dock {
        grid-template-columns: 1fr;
        width: min(190px, calc(100% - 20px));
    }

    .member-map-fullmap .map-panel-summary {
        padding: 10px 12px;
    }

    .member-map-fullmap .map-panel-summary strong {
        font-size: 20px;
    }

    .member-map-fullmap .map-panel-body {
        max-height: 44svh;
        padding: 0 12px 12px;
    }

    .nearby-contact-map-card {
        min-height: calc(100svh - 72px);
    }

    .nearby-contact-page .nearby-contact-map,
    .nearby-contact-page .nearby-contact-map.is-real-world-map {
        min-height: calc(100svh - 72px);
        height: calc(100svh - 72px);
    }

    .nearby-contact-map-head {
        align-items: center;
        flex-direction: row;
        gap: 8px;
        padding: 9px 10px;
        width: calc(100% - 92px);
        max-height: 24svh;
        overflow: auto;
    }

    .nearby-contact-map-head h1 {
        font-size: 20px;
    }

    .nearby-contact-map-head p {
        font-size: 11px;
        line-height: 1.35;
    }

    .nearby-contact-map-head .actions {
        display: none;
    }

    .nearby-contact-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-height: 124px;
        overflow: auto;
    }

    .nearby-contact-stats div {
        min-height: 54px;
        padding: 8px 10px;
    }

    .nearby-contact-stats strong {
        font-size: 18px;
    }

    .nearby-contact-stats span {
        margin-top: 4px;
        font-size: 12px;
    }

    .nearby-contact-workspace,
    .nearby-message-board {
        width: calc(100% - 24px);
        margin-top: 14px;
    }

    .nearby-contact-panel,
    .nearby-contact-rules,
    .nearby-message-board {
        padding: 16px;
    }

    .nearby-contact-menu {
        bottom: 10px;
    }

    .nearby-contact-top-menu {
        top: auto;
        right: 10px;
        bottom: 62px;
        width: min(260px, calc(100% - 20px));
    }

    .nearby-contact-top-body {
        max-height: 52svh;
    }

    .nearby-contact-menu > summary {
        min-height: 42px;
        padding: 10px 12px;
    }

    .nearby-contact-menu-body {
        max-height: 48svh;
        padding: 12px;
    }
}

.modal-actions {
    position: sticky;
    bottom: 0;
    margin: 0 -18px -18px;
    padding: 14px 18px;
    border-top: 1px solid var(--line);
    background: rgba(255, 255, 255, .96);
    backdrop-filter: blur(12px);
}

body.modal-open {
    overflow: hidden;
}

.account-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.account-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 860px;
}

.account-table th,
.account-table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: top;
}

.account-table th {
    color: var(--muted);
    font-size: 13px;
    text-transform: uppercase;
}

.account-table tbody tr {
    cursor: pointer;
}

.account-table tbody tr:hover {
    background: #edf6f2;
}

.account-table td span {
    display: block;
    margin-top: 5px;
    color: var(--muted);
    font-size: 13px;
}

.account-table .status-pill {
    display: inline-flex;
    margin: 0 6px 6px 0;
    color: var(--text);
}

.account-table .status-pill.active {
    color: var(--accent-strong);
}

.account-table .status-pill.blocked {
    color: var(--danger);
}

.pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

.pagination a,
.pagination span {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--text);
    font-weight: 800;
    text-decoration: none;
}

.pagination .disabled {
    color: var(--muted);
    pointer-events: none;
    opacity: .55;
}

.account-stats {
    margin-top: 0;
    margin-bottom: 24px;
}

.account-detail-card {
    margin-bottom: 22px;
}

.account-form-tabs {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 16px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.account-form-tabs a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 7px 11px;
    border: 1px solid rgba(17, 126, 89, .22);
    border-radius: 8px;
    background: #edf6f2;
    color: var(--text);
    font-weight: 900;
    text-decoration: none;
}

.account-form-tabs a:hover,
.account-form-tabs a:focus-visible {
    border-color: rgba(17, 126, 89, .45);
    background: #dff0e9;
    outline: none;
}

.compact-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    margin-bottom: 24px;
}

.compact-grid article p {
    margin: 0;
    color: var(--text);
    font-size: clamp(18px, 2vw, 28px);
    font-weight: 900;
    overflow-wrap: anywhere;
}

.phone-shot {
    width: 260px;
    min-height: 430px;
    border: 10px solid #1f2d27;
    border-radius: 32px;
    padding: 16px;
    background: var(--surface);
    box-shadow: var(--shadow);
}

.phone-shot.large {
    justify-self: center;
}

.phone-top {
    width: 64px;
    height: 6px;
    margin: 0 auto 16px;
    border-radius: 999px;
    background: #1f2d27;
}

.phone-map {
    position: relative;
    height: 210px;
    border-radius: 8px;
    background: #d9ebe4;
    border: 1px solid var(--line);
    overflow: hidden;
}

.phone-map span {
    position: absolute;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background: var(--accent);
    border: 3px solid #fff;
}

.phone-map span:nth-child(1) { left: 24%; top: 24%; }
.phone-map span:nth-child(2) { left: 62%; top: 36%; background: var(--blue); }
.phone-map span:nth-child(3) { left: 44%; top: 66%; background: var(--red); }
.phone-map span:nth-child(4) { left: 74%; top: 72%; background: var(--yellow); }

.phone-list {
    height: 126px;
    margin-top: 16px;
    border-radius: 8px;
    background:
        linear-gradient(#edf3eb 0 24px, transparent 24px 38px),
        linear-gradient(#edf3eb 0 24px, transparent 24px 38px),
        linear-gradient(#edf3eb 0 24px, transparent 24px 38px);
    background-position: 0 0, 0 44px, 0 88px;
    background-size: 100% 38px;
    background-repeat: no-repeat;
}

.page-head {
    max-width: 820px;
    margin-bottom: 22px;
}

.page-head.with-actions {
    max-width: none;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 18px;
}

.page-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
}

.page-actions form {
    display: inline-flex;
    margin: 0;
}

.toolbar {
    display: grid;
    gap: 12px;
    margin-bottom: 18px;
}

input,
textarea,
select {
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    font: inherit;
    background: #fff;
    color: var(--text);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}

input:focus,
textarea:focus,
select:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 4px rgba(22, 118, 88, .12);
    outline: none;
}

.duration-unit-field {
    display: grid;
    gap: 6px;
}

.duration-unit-field > span {
    display: grid;
    grid-template-columns: minmax(88px, 1fr) minmax(130px, .8fr);
    gap: 8px;
}

.filter-row button {
    min-height: 36px;
    background: var(--soft);
    color: var(--text);
    border-color: var(--line);
}

.filter-row button.active {
    color: #fff;
    background: var(--accent);
    border-color: var(--accent);
}

.map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(320px, 420px);
    gap: 18px;
    align-items: start;
}

.public-map-experience {
    padding-top: 42px;
}

.map-product-head {
    align-items: end;
    margin-bottom: 18px;
}

.map-product-head h1 {
    margin: 4px 0 6px;
    font-size: clamp(42px, 7vw, 86px);
    line-height: .94;
}

.map-product-head p {
    max-width: 820px;
    margin: 0;
    color: var(--muted);
    font-size: clamp(17px, 1.4vw, 22px);
}

.public-map-showcase {
    display: block;
}

.public-map-stage {
    position: relative;
    min-height: 720px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #e8f0ed;
    box-shadow: var(--shadow-soft);
}

.public-roadcache-map {
    min-height: 720px;
    height: min(78vh, 820px);
    border: 0;
    border-radius: 0;
    scroll-margin-top: 104px;
    box-shadow: none;
}

.public-map-controls-overlay {
    position: absolute;
    top: 18px;
    left: 18px;
    z-index: 520;
    width: min(680px, calc(100% - 430px));
}

.public-map-cta {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 520;
    display: grid;
    align-content: start;
    gap: 14px;
    width: min(380px, calc(100% - 36px));
    max-height: calc(100% - 36px);
    overflow: hidden;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(14px);
}

.map-results-widget {
    display: grid;
    gap: 10px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--line);
}

.map-results-widget h2,
.map-results-widget p {
    margin: 0;
}

.map-results-list {
    display: grid;
    gap: 10px;
    max-height: min(54vh, 440px);
    overflow-y: auto;
    padding-right: 4px;
    scrollbar-width: thin;
}

.map-results-list .point-list-card {
    background: #fff;
}

.map-results-list .point-list-card.is-selected {
    border-color: var(--accent);
    background: #edf8f3;
    box-shadow: 0 0 0 2px rgba(22, 118, 88, .12);
}

.map-result-desc {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    margin: 6px 0 0;
    overflow: hidden;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.35;
}

.map-popup-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 8px 0;
}

.map-popup-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 7px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f6faf8;
    color: var(--ink);
    font-size: 11px;
    font-weight: 900;
}

.map-popup-badge strong {
    color: var(--accent);
}

.public-map-stats {
    margin-bottom: 18px;
}

.public-map-tools {
    margin: 0;
}

.map-overlay-card {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid rgba(188, 209, 202, .88);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 18px 50px rgba(18, 45, 39, .16);
    backdrop-filter: blur(14px);
}

.compact-map-tools {
    gap: 10px;
}

.compact-tools-head {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 12px;
}

.compact-tools-head strong {
    display: block;
    color: var(--ink);
    font-size: 20px;
    line-height: 1.1;
}

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

.compact-map-status {
    max-width: 320px;
    margin: 0;
    font-size: 13px;
    text-align: right;
}

.public-map-guest-cta {
    display: grid;
    gap: 8px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f7fbf9;
}

.public-map-guest-cta strong {
    font-size: 18px;
}

.public-map-guest-cta span {
    color: var(--muted);
    font-weight: 700;
}


.map-city-search {
    position: relative;
    flex: 1 1 250px;
    min-width: min(260px, 100%);
    max-width: 420px;
}

.map-city-search-line {
    display: flex;
    align-items: center;
    min-height: 38px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
}

.map-city-search-line input {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    min-height: 36px;
    padding: 7px 10px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    color: var(--ink);
    font-weight: 800;
}

.map-city-search-line input:focus {
    box-shadow: none;
    outline: none;
}

.map-city-search-button {
    flex: 0 0 42px;
    min-width: 42px;
    min-height: 36px !important;
    padding: 5px 8px !important;
    border-width: 0 0 0 1px !important;
    border-radius: 0 !important;
}

.map-city-search-results {
    position: absolute;
    z-index: 1200;
    top: calc(100% + 5px);
    left: 0;
    right: 0;
    display: grid;
    gap: 3px;
    max-height: 280px;
    overflow: auto;
    padding: 6px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: 0 16px 40px rgba(18, 45, 39, .22);
}

.map-city-search-results[hidden] {
    display: none;
}

.map-city-search-result {
    display: grid;
    gap: 2px;
    width: 100%;
    padding: 9px 10px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--ink);
    text-align: left;
    cursor: pointer;
}

.map-city-search-result:hover,
.map-city-search-result:focus-visible {
    background: #edf7f3;
}

.map-city-search-result strong,
.map-city-search-result small {
    display: block;
}

.map-city-search-result small {
    color: var(--muted);
}

.map-city-search-status {
    display: block;
    margin: 4px 2px 0;
    font-size: 12px;
}

.map-city-search-status[hidden] {
    display: none;
}

@media (max-width: 700px) {
    .map-city-search {
        flex-basis: 100%;
        max-width: none;
    }
}

.map-load-controls {
    padding: 16px;
}

.map-load-controls-panel {
    display: block;
    padding: 0;
    overflow: hidden;
}

.map-load-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 16px;
    cursor: pointer;
    list-style: none;
}

.member-map-tools-overlay .map-load-summary {
    gap: 10px;
    padding: 12px 14px;
}

.map-load-summary::-webkit-details-marker {
    display: none;
}

.map-load-summary strong {
    display: block;
    font-size: 24px;
    line-height: 1.1;
}

.member-map-tools-overlay .map-load-summary strong {
    font-size: 22px;
}

.map-load-summary small {
    display: block;
    margin-top: 4px;
    color: var(--muted);
    font-weight: 750;
}

.member-map-tools-overlay .map-load-summary small {
    font-size: 12px;
}

.map-load-toggle-text {
    flex: 0 0 auto;
    padding: 9px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--accent);
    font-weight: 900;
}

.member-map-tools-overlay .map-load-toggle-text {
    padding: 8px 10px;
    font-size: 14px;
}

.map-load-toggle-text .is-open,
.map-load-controls-panel[open] .map-load-toggle-text .is-closed {
    display: none;
}

.map-load-controls-panel[open] .map-load-toggle-text .is-open {
    display: inline;
}

.map-load-controls-body {
    display: grid;
    gap: 12px;
    padding: 0 16px 16px;
    border-top: 1px solid rgba(22, 118, 88, .12);
}

.member-map-tools-overlay .map-load-controls-body {
    max-height: min(52vh, 420px);
    overflow: auto;
    padding: 0 14px 14px;
}

.map-load-controls h2 {
    margin-bottom: 4px;
}

.map-load-controls > div:first-child p {
    margin-bottom: 10px;
}

.map-control-stack {
    flex-direction: column;
    align-items: stretch;
    gap: 9px;
}

.map-control-row,
.map-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.map-control-row-main .button {
    min-height: 38px;
    padding: 8px 12px;
}

.map-control-panel {
    width: 100%;
}

.map-control-panel > summary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 0 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--ink);
    font-weight: 900;
    cursor: pointer;
    list-style: none;
}

.map-control-panel > summary::-webkit-details-marker {
    display: none;
}

.map-control-panel > summary::after {
    content: "+";
    color: var(--accent);
    font-weight: 900;
}

.map-control-panel[open] > summary::after {
    content: "-";
}

.map-control-panel-body {
    display: grid;
    gap: 10px;
    margin-top: 10px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .75);
}

.map-control-panel-open .map-control-panel-body {
    margin-top: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.map-load-controls .actions label,
.public-map-tools .actions label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    margin: 0;
    padding: 0 9px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--muted);
    font-weight: 900;
}

.map-load-controls .actions select,
.public-map-tools .actions select {
    min-height: 32px;
    min-width: 150px;
    padding: 4px 28px 4px 8px;
    border: 0;
    background-color: transparent;
    box-shadow: none;
    font-weight: 900;
}

.map-load-controls .actions [data-map-theme-select],
.public-map-tools .actions [data-map-theme-select],
.admin-zone-panel [data-map-theme-select] {
    min-width: 118px;
}

.map-theme-toggle-button {
    min-width: 38px !important;
    width: 38px;
    min-height: 34px;
    padding: 4px 6px !important;
    font-weight: 900;
    line-height: 1;
}

.map-load-controls .actions select:focus,
.public-map-tools .actions select:focus {
    box-shadow: none;
}

.map-filter-panel {
    position: relative;
    z-index: 40;
}

.map-load-controls .actions .map-filter-panel[open],
.public-map-tools .actions .map-filter-panel[open] {
    flex: 1 1 100%;
    width: 100%;
}

.map-filter-panel summary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 0 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
    font-weight: 900;
    cursor: pointer;
    list-style: none;
}

.map-filter-panel summary::-webkit-details-marker {
    display: none;
}

.map-filter-panel summary::after {
    content: "+";
    color: var(--accent);
    font-weight: 900;
}

.map-filter-panel[open] summary::after {
    content: "-";
}

.map-filter-panel summary span {
    display: inline-flex;
    align-items: center;
    min-width: 34px;
    min-height: 24px;
    padding: 2px 8px;
    border-radius: 999px;
    background: #eaf4f0;
    color: var(--accent);
    justify-content: center;
}

.map-category-filter {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: min(760px, calc(100vw - 32px));
    max-height: 430px;
    overflow: auto;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .98);
    box-shadow: var(--shadow);
}

.map-load-controls .actions .map-filter-panel[open] .map-category-filter,
.public-map-tools .actions .map-filter-panel[open] .map-category-filter {
    position: static;
    width: 100%;
    max-width: 100%;
    max-height: min(430px, 58vh);
    margin-top: 8px;
    transform: none;
}

.map-filter-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 10px;
}

.map-fuel-filter {
    display: grid;
    gap: 10px;
}

.map-fuel-master-toggle {
    justify-content: flex-start !important;
    width: fit-content;
}

.map-fuel-options {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.map-fuel-option {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    min-height: 34px !important;
    padding: 5px 9px !important;
    border: 1px solid var(--line);
    border-radius: 999px !important;
    background: #fff !important;
    color: var(--ink) !important;
    cursor: pointer;
}

.map-fuel-option input {
    margin: 0;
}

.map-fuel-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 11px;
    font-weight: 900;
}

.fuel-legend-green { color: #147a58; }
.fuel-legend-orange { color: #b9602d; }
.fuel-legend-red { color: #b53734; }

.map-filter-actions button {
    min-height: 36px;
    padding: 0 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--ink);
    font-weight: 900;
    cursor: pointer;
}

.map-filter-actions button:hover {
    border-color: var(--accent);
    color: var(--accent);
}

.map-preset-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.map-preset-row button {
    min-height: 34px;
    padding: 0 11px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--ink);
    font-weight: 900;
    cursor: pointer;
}

.map-preset-row button:hover,
.map-preset-row button:focus {
    border-color: var(--accent);
    color: var(--accent);
}

.map-selected-actions {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    width: fit-content;
    padding: 6px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(234, 244, 240, .8);
}

.map-selected-actions[hidden] {
    display: none;
}

.map-selected-actions > span {
    padding: 0 6px;
    color: var(--muted);
    font-size: .88rem;
    font-weight: 900;
}

.map-category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 8px;
}

.map-load-controls .actions .map-category-option,
.public-map-tools .actions .map-category-option {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 46px;
    margin: 0;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--ink);
    font-weight: 900;
}

@media (max-width: 760px) {
    .map-load-controls {
        padding: 12px;
    }

    .map-load-controls-panel {
        padding: 0;
    }

    .map-load-summary {
        align-items: flex-start;
        flex-direction: column;
    }

    .map-load-toggle-text {
        width: 100%;
        text-align: center;
    }

    .map-control-row-main .button,
    .map-load-controls .actions label,
    .map-control-panel > summary {
        flex: 1 1 150px;
    }

    .map-load-controls .actions select {
        min-width: 96px;
    }

    .map-selected-actions {
        width: 100%;
    }
}

/* Supervision administrateur en direct */
.supervision-page {
    --supervision-green: #0f765c;
    --supervision-green-dark: #0b493b;
    --supervision-amber: #d99718;
    --supervision-red: #cf4a43;
    --supervision-blue: #2e70c9;
    min-height: calc(100vh - 150px);
}

.supervision-page:fullscreen {
    overflow: auto;
    padding: 32px max(32px, 4vw);
    background: #edf5f2;
}

.supervision-head h1 { margin-bottom: .25rem; }

.supervision-toolbar {
    position: sticky;
    z-index: 20;
    top: 86px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin: 20px 0 26px;
    padding: 14px 16px;
    border: 1px solid #cbdcd6;
    border-radius: 14px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 12px 32px rgba(31, 67, 57, .1);
    backdrop-filter: blur(10px);
}

.supervision-live-state,
.supervision-controls,
.supervision-system-heading,
.supervision-screen-title {
    display: flex;
    align-items: center;
    gap: 10px;
}

.supervision-live-state > span:last-child { color: #60716c; font-size: .9rem; }

.supervision-live-dot,
.supervision-state-dot {
    display: inline-block;
    flex: 0 0 auto;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: #8a9793;
}

.supervision-live-dot.is-online {
    background: #15a676;
    box-shadow: 0 0 0 5px rgba(21, 166, 118, .15);
    animation: supervision-pulse 2s infinite;
}

.supervision-controls { flex-wrap: wrap; justify-content: flex-end; }
.supervision-controls label { display: flex; align-items: center; gap: 8px; font-size: .85rem; font-weight: 700; }
.supervision-controls select { width: auto; min-width: 76px; padding: 7px 28px 7px 9px; }
.supervision-controls button { white-space: nowrap; }

.supervision-filter-bar {
    display: grid;
    grid-template-columns: repeat(4, minmax(150px, 1fr)) auto;
    gap: 12px;
    align-items: end;
    margin: 0 0 22px;
    padding: 14px;
    border: 1px solid #cbdad5;
    border-radius: 14px;
    background: rgba(255,255,255,.88);
}
.supervision-filter-bar label { display: grid; gap: 5px; font-size: .85rem; font-weight: 800; }
.supervision-filter-bar select { min-width: 0; }

.supervision-screen { animation: supervision-screen-in .28s ease-out; }
.supervision-screen-title { justify-content: space-between; margin-bottom: 18px; }
.supervision-screen-title h2 { margin: 0; font-size: clamp(1.8rem, 3vw, 2.8rem); }
.supervision-screen-title .eyebrow { margin: 0 0 4px; color: var(--supervision-green); }
.supervision-screen-title > span:last-child { color: #60716c; font-weight: 700; }

.supervision-health-badge {
    padding: 9px 13px;
    border-radius: 999px;
    background: #e8eeec;
    color: #4f5d59;
    font-weight: 800;
}
.supervision-health-badge.status-ok { background: #dff5eb; color: #086347; }
.supervision-health-badge.status-warning { background: #fff0cf; color: #815600; }
.supervision-health-badge.status-critical { background: #ffe0dd; color: #9c2923; }

.supervision-kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.supervision-kpi-grid article,
.supervision-chart-card,
.supervision-system-card,
.supervision-server-note,
.supervision-definitions {
    border: 1px solid #cfddd8;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(25, 62, 52, .08);
}

.supervision-kpi-grid article { min-height: 142px; padding: 18px; }
.supervision-kpi-grid article > span { display: block; min-height: 42px; color: #526660; font-weight: 700; }
.supervision-kpi-grid article > strong { display: block; margin: 3px 0 8px; color: #102d25; font-size: clamp(2rem, 3.2vw, 3.15rem); line-height: 1; }
.supervision-kpi-grid article small { color: #70817c; }

.supervision-chart-card { margin-top: 16px; padding: 18px; }
.supervision-chart-card h3 { margin: 0 0 4px; }
.supervision-bars { display: flex; align-items: flex-end; gap: 3px; height: 180px; margin-top: 20px; padding-top: 8px; border-bottom: 2px solid #bdcec8; background: repeating-linear-gradient(to top, transparent 0, transparent 44px, #edf2f0 45px); }
.supervision-bar { flex: 1; min-width: 2px; border-radius: 4px 4px 0 0; background: linear-gradient(#22aa81, #0d6c54); transition: height .35s ease; }
.supervision-bar:hover { background: #e39a19; }
.supervision-chart-axis { display: flex; justify-content: space-between; margin-top: 7px; color: #6b7b76; font-size: .8rem; }

.supervision-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.supervision-chart-grid .supervision-chart-card { margin-top: 0; }
.supervision-chart-card svg { width: 100%; height: 240px; margin-top: 12px; overflow: visible; }
.supervision-grid-line { fill: none; stroke: #e1e9e6; stroke-width: 1; }
.supervision-line { fill: none; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.supervision-line.requests { stroke: var(--supervision-green); }
.supervision-line.response { stroke: var(--supervision-blue); }
.supervision-chart-summary { margin: 3px 0 0; color: #536760; font-weight: 700; }
.supervision-scope-table { margin-top: 16px; border-radius: 14px; background: #fff; }
.supervision-scope-name { font-weight: 800; }
.supervision-definitions { margin-top: 16px; padding: 15px 18px; }
.supervision-definitions summary { cursor: pointer; font-weight: 800; }
.supervision-definitions dl { display: grid; grid-template-columns: 180px 1fr; gap: 8px 18px; margin-bottom: 0; }
.supervision-definitions dt { font-weight: 800; }
.supervision-definitions dd { margin: 0; color: #536760; }

.supervision-system-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.supervision-system-card { position: relative; overflow: hidden; min-height: 180px; padding: 20px; }
.supervision-system-card::before { position: absolute; top: 0; right: 0; left: 0; height: 5px; content: ''; background: #92a09c; }
.supervision-system-card.status-ok::before { background: #14956e; }
.supervision-system-card.status-warning::before { background: var(--supervision-amber); }
.supervision-system-card.status-critical::before { background: var(--supervision-red); }
.supervision-system-heading h3 { margin: 0; font-size: 1.05rem; }
.supervision-system-card > strong { display: block; margin: 24px 0 8px; color: #102d25; font-size: clamp(1.8rem, 3vw, 2.8rem); line-height: 1; }
.supervision-system-card > p { min-height: 38px; margin: 0; color: #657772; }
.supervision-state-dot.ok { background: #14956e; }
.supervision-state-dot.warning { background: var(--supervision-amber); }
.supervision-state-dot.critical { background: var(--supervision-red); }
.supervision-state-dot.unknown { background: #899793; }
.supervision-meter { height: 8px; margin-top: 14px; overflow: hidden; border-radius: 999px; background: #e7eeeb; }
.supervision-meter span { display: block; height: 100%; border-radius: inherit; background: var(--supervision-green); }
.status-warning .supervision-meter span { background: var(--supervision-amber); }
.status-critical .supervision-meter span { background: var(--supervision-red); }
.supervision-server-note { margin-top: 16px; padding: 18px; }
.supervision-server-note h3 { margin-top: 0; }
.supervision-breakdown { display: grid; gap: 14px; margin-top: 18px; }
.supervision-breakdown-row { display: grid; gap: 5px; }
.supervision-breakdown-heading { display: flex; justify-content: space-between; gap: 12px; }
.supervision-breakdown-row small { color: #697a75; }
.supervision-storage-summary {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 16px;
    align-items: center;
    margin-bottom: 16px;
    padding: 20px;
    border: 2px solid #8eb9aa;
    border-radius: 16px;
    background: #fff;
}
.supervision-storage-summary > strong { font-size: clamp(1.5rem, 3vw, 2.5rem); }
.supervision-storage-summary > .supervision-meter { grid-column: 1 / -1; margin-top: 0; }
.supervision-storage-summary.status-warning { border-color: #d99718; }
.supervision-storage-summary.status-high,
.supervision-storage-summary.status-critical { border-color: #cf4a43; }

@keyframes supervision-pulse { 50% { box-shadow: 0 0 0 9px rgba(21, 166, 118, 0); } }
@keyframes supervision-screen-in { from { opacity: 0; transform: translateY(8px); } }

@media (max-width: 1050px) {
    .supervision-toolbar { position: static; align-items: flex-start; flex-direction: column; }
    .supervision-controls { justify-content: flex-start; }
    .supervision-filter-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .supervision-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .supervision-system-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
    .supervision-kpi-grid,
    .supervision-chart-grid,
    .supervision-system-grid { grid-template-columns: 1fr; }
    .supervision-controls { align-items: stretch; width: 100%; }
    .supervision-controls label { width: 100%; }
    .supervision-filter-bar { grid-template-columns: 1fr; }
    .supervision-storage-summary { grid-template-columns: 1fr; }
    .supervision-storage-summary > .supervision-meter { grid-column: 1; }
    .supervision-screen-title { align-items: flex-start; flex-direction: column; }
    .supervision-definitions dl { grid-template-columns: 1fr; }
    .supervision-bars { gap: 1px; height: 130px; }
}

@media (prefers-reduced-motion: reduce) {
    .supervision-live-dot.is-online,
    .supervision-screen { animation: none; }
    .supervision-bar { transition: none; }
}

.map-category-option input {
    width: 16px;
    height: 16px;
    accent-color: var(--accent);
    flex: 0 0 auto;
}

.map-category-option img,
.map-category-letter {
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    border-radius: 8px;
    object-fit: contain;
    background: #fff;
    border: 1px solid rgba(22, 118, 88, .18);
}

.map-category-letter {
    display: inline-grid;
    place-items: center;
    background: #eaf4f0;
    color: var(--accent);
    font-weight: 900;
}

.map-category-option > span:not(.map-category-letter) {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.feature-check-list {
    display: grid;
    gap: 9px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.feature-check-list li {
    position: relative;
    padding-left: 26px;
    color: var(--muted);
}

.feature-check-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .18em;
    width: 16px;
    height: 16px;
    border-radius: 999px;
    background: var(--accent);
    box-shadow: inset 0 0 0 5px #dff1ea;
}

.signup-rights {
    display: grid;
    gap: 10px;
    margin-bottom: 16px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.public-map,
.mini-map,
.journal-map {
    position: relative;
    min-height: 590px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .08) 1px, transparent 1px),
        #d9ebe4;
    background-size: 58px 58px;
}

.map-water {
    position: absolute;
    left: -10%;
    top: 56%;
    width: 120%;
    height: 90px;
    background: #acdbe6;
    transform: rotate(-7deg);
}

.map-road {
    position: absolute;
    height: 14px;
    width: 90%;
    border-radius: 999px;
    background: #f3c565;
    border: 3px solid rgba(120, 99, 64, .2);
}

.map-road.one {
    left: -12%;
    top: 28%;
    transform: rotate(11deg);
}

.map-road.two {
    right: -14%;
    top: 74%;
    transform: rotate(-12deg);
}

.map-marker {
    position: absolute;
    transform: translate(-50%, -50%);
    text-decoration: none;
    z-index: 3;
}

.place-list {
    display: grid;
    gap: 12px;
}

.place-card {
    display: grid;
    grid-template-columns: 92px 1fr;
    gap: 14px;
    padding: 12px;
}

.place-card.is-hidden,
.map-marker.is-hidden {
    display: none;
}

.place-photo,
.photo-tile {
    min-height: 92px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    color: #fff;
    font-weight: 900;
    text-align: center;
    padding: 10px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2);
}

.home-icon-card {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #071d31;
    box-shadow: var(--shadow-soft);
}

.home-icon-card img {
    display: block;
    width: 100%;
    max-height: 360px;
    object-fit: cover;
}

.tone-green { background: var(--accent); }
.tone-blue { background: var(--blue); }
.tone-red { background: var(--red); }
.tone-yellow { background: var(--yellow); color: var(--text); }
.tone-purple { background: var(--purple); }
.tone-orange { background: var(--orange); }
.admin-map-marker.tone-green,
.admin-map-marker.tone-blue,
.admin-map-marker.tone-red,
.admin-map-marker.tone-yellow,
.admin-map-marker.tone-purple,
.admin-map-marker.tone-orange {
    background: transparent;
}
.private { background: #6e7772; }

.tags span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 9px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-weight: 700;
    font-size: 13px;
}

.pill {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 32px;
    padding: 6px 10px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--accent-strong);
    font-size: 13px;
    font-weight: 900;
}

.tags.big span {
    min-height: 38px;
}

[data-geo-point-row] {
    transition: background-color .18s ease, box-shadow .18s ease, opacity .18s ease;
}

[data-geo-point-row].geo-row-processing {
    background: #e8f1ff;
    box-shadow: inset 4px 0 0 #2f6fe4;
}

[data-geo-point-row].geo-row-success {
    background: #e4f6ed;
    box-shadow: inset 4px 0 0 var(--accent);
}

[data-geo-point-row].geo-row-error {
    background: #fff3db;
    box-shadow: inset 4px 0 0 #d89419;
}

[data-geo-point-row].geo-row-waiting {
    background: #f3f7f5;
    box-shadow: inset 4px 0 0 #93a7a0;
}

[data-geo-process-badge] {
    background: #2f6fe4 !important;
    color: white !important;
}

.geo-row-success [data-geo-process-badge] {
    background: var(--accent) !important;
}

.geo-row-error [data-geo-process-badge] {
    background: #d89419 !important;
    color: #10251f !important;
}

.geo-autofill-log-card {
    margin-top: 12px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.geo-autofill-log-card summary {
    cursor: pointer;
    font-weight: 800;
}

.geo-autofill-log {
    display: grid;
    gap: 6px;
    margin: 10px 0 0;
    padding: 0;
    list-style: none;
}

.geo-autofill-log li {
    padding: 8px 10px;
    border-radius: 6px;
    background: #fff3db;
    color: #694009;
    font-size: 14px;
    overflow-wrap: anywhere;
}

.detail-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 24px;
    align-items: start;
}

.detail-layout.trip-share-single-column {
    grid-template-columns: minmax(0, 1fr);
}

.point-detail-head {
    gap: 16px;
}

.point-detail-head h1 {
    font-size: clamp(30px, 4vw, 48px);
}

.point-detail-actions {
    display: flex;
    flex-wrap: nowrap;
    gap: 8px;
    align-items: center;
    overflow-x: auto;
}

.point-detail-actions .button {
    min-height: 42px;
    padding: 10px 14px;
    white-space: nowrap;
}

.admin-point-detail-head {
    display: grid;
    grid-template-columns: 1fr;
    align-items: start;
}

.admin-point-detail-actions {
    width: 100%;
    justify-content: flex-start;
    flex-wrap: wrap;
    overflow: visible;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.admin-point-detail-actions .button {
    flex: 0 1 auto;
    min-width: max-content;
}

.point-detail-layout {
    display: block;
}

.point-summary-card {
    display: grid;
    gap: 12px;
    padding: 18px 22px;
    margin-bottom: 18px;
}

.point-summary-card p {
    display: -webkit-box;
    margin: 0;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-height: 1.45;
}

.compact-tags {
    flex-wrap: nowrap;
    overflow-x: auto;
}

.compact-tags span {
    min-height: 32px;
    padding: 7px 11px;
    white-space: nowrap;
}

.point-info-strip,
.point-facts,
.point-note-line {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 18px;
}

.point-info-strip span,
.point-facts span,
.point-note-line {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 8px 11px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 8px 20px rgba(18, 37, 31, .06);
    font-weight: 800;
}

.point-info-strip strong,
.point-facts strong,
.point-note-line strong {
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
}

.point-facts {
    margin-top: -8px;
}

.point-detail-layout h2 {
    margin: 18px 0 10px;
    font-size: 26px;
}

.point-detail-layout .service-index-read {
    padding: 12px;
}

.point-detail-layout .service-icon-strip {
    max-height: 82px;
    overflow: hidden;
}

.review-form-card {
    display: grid;
    gap: 12px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.review-callout-card {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
}

.review-callout-card h2,
.review-callout-card p {
    margin: 0;
}

.point-review-modal {
    max-width: 760px;
}

.star-rating-field {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    border: 0;
}

.star-rating-field legend {
    font-weight: 900;
}

.star-rating {
    display: inline-flex;
    flex-direction: row-reverse;
    justify-content: flex-end;
    gap: 4px;
}

.star-rating input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.star-rating label {
    cursor: pointer;
    color: #c6d4cf;
    font-size: 34px;
    line-height: 1;
    transition: color .15s ease, transform .15s ease;
}

.star-rating label:hover,
.star-rating label:hover ~ label,
.star-rating input:checked ~ label {
    color: #f2b84b;
}

.star-rating label:hover {
    transform: translateY(-1px);
}

.review-extra-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.review-extra-actions .is-active {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
}

.review-service-box {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.review-service-box h3 {
    margin: 0;
}

.review-service-box h4 {
    margin: 4px 0 0;
}

.review-service-box details {
    display: grid;
    gap: 8px;
    padding: 10px;
    border: 1px solid rgba(18, 37, 31, .12);
    border-radius: 8px;
    background: #fff;
}

.review-service-box summary {
    cursor: pointer;
    font-weight: 900;
}

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

.review-check-grid label {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    font-weight: 800;
}

.review-signal-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.review-signal-summary span {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 5px 8px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-size: 12px;
    font-weight: 900;
}

.trip-prep-box {
    display: grid;
    grid-template-columns: minmax(240px, .75fr) minmax(0, 1.25fr);
    gap: 16px;
    padding: 16px;
    border: 1px solid rgba(22, 118, 88, .25);
    border-left: 5px solid var(--accent);
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(22, 118, 88, .1), rgba(255, 255, 255, .96));
    box-shadow: var(--shadow-soft);
}

.trip-prep-box h2 {
    margin: 0;
    font-size: 22px;
}

.trip-prep-box p {
    color: var(--muted);
    font-weight: 700;
}

.trips-route-page {
    display: grid;
    gap: 22px;
}

.trips-route-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    min-height: 300px;
    padding: clamp(22px, 4vw, 36px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 48%, rgba(255, 255, 255, .62) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png") right center / 48% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 48% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.trips-route-hero::after {
    position: absolute;
    right: 22%;
    bottom: -110px;
    width: min(42vw, 560px);
    height: 250px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-10deg);
    content: "";
    pointer-events: none;
}

.trips-route-copy {
    position: relative;
    z-index: 1;
    display: grid;
    align-content: center;
    justify-items: start;
}

.trips-route-copy h1 {
    max-width: 760px;
    margin-bottom: 14px;
    font-size: clamp(38px, 6vw, 68px);
    line-height: .96;
}

.trips-route-copy p {
    max-width: 640px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.trips-route-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.trips-route-stats span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .76);
    color: var(--muted);
    font-weight: 800;
}

.trips-route-stats strong {
    color: var(--text);
    font-size: 20px;
}

.trips-route-layout {
    grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
}

.trips-main-panel,
.trip-create-panel {
    min-width: 0;
}

.trips-main-panel > .trip-section-head {
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .82);
    box-shadow: var(--shadow-soft);
}

.trips-main-panel .timeline {
    margin-top: 12px;
}

.trips-main-panel .trip-card {
    position: relative;
    display: grid;
    gap: 8px;
    padding: 18px 20px;
}

.trips-main-panel .trip-card h3,
.trips-main-panel .trip-card p {
    margin: 0;
}

.trip-create-panel {
    position: sticky;
    top: 86px;
}

.trip-create-panel h2,
.trip-create-panel p {
    margin-top: 0;
}

.journals-page {
    display: grid;
    gap: 22px;
}

.journals-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    min-height: 300px;
    padding: clamp(22px, 4vw, 36px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .89) 48%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/62/46.png") right center / 48% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 48% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.journals-hero::after {
    position: absolute;
    right: 22%;
    bottom: -110px;
    width: min(42vw, 560px);
    height: 250px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-10deg);
    content: "";
    pointer-events: none;
}

.journals-hero-copy {
    position: relative;
    z-index: 1;
    display: grid;
    align-content: center;
    justify-items: start;
}

.journals-hero h1 {
    max-width: 760px;
    margin-bottom: 14px;
    font-size: clamp(38px, 6vw, 68px);
    line-height: .96;
}

.journals-hero p {
    max-width: 680px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.journals-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.journals-stats span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .76);
    color: var(--muted);
    font-weight: 800;
}

.journals-stats strong {
    color: var(--text);
    font-size: 20px;
}

.journals-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.journals-steps article {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    box-shadow: var(--shadow-soft);
}

.journals-steps article > span {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--soft);
    color: var(--accent-strong);
    font-weight: 900;
}

.journals-steps strong,
.journals-steps p {
    margin: 0;
}

.journals-steps p {
    margin-top: 4px;
    color: var(--muted);
    line-height: 1.35;
}

.journals-layout {
    grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
}

.journals-main-panel,
.journals-create-panel {
    min-width: 0;
}

.journals-main-panel > .section-head-row {
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .82);
    box-shadow: var(--shadow-soft);
}

.journals-list {
    margin-top: 12px;
}

.journal-list-card {
    position: relative;
    display: grid;
    gap: 10px;
    padding: 18px 20px;
    overflow: hidden;
    border-top: 4px solid transparent;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .05) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .035) 1px, transparent 1px),
        rgba(255, 255, 255, .9);
    background-size: 56px 56px;
}

.journal-list-card::before {
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: var(--accent);
    content: "";
}

.journal-list-card h3,
.journal-list-card p {
    margin: 0;
}

.journal-list-card-head {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.journals-create-panel {
    position: sticky;
    top: 86px;
    display: grid;
    gap: 14px;
}

.partner-ads-page {
    display: grid;
    gap: 22px;
}

.partner-ads-hero {
    position: relative;
    min-height: 280px;
    padding: clamp(22px, 4vw, 36px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .9) 48%, rgba(255, 255, 255, .62) 100%),
        url("https://tile.openstreetmap.org/7/64/45.png") right center / 48% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 48% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.partner-ads-hero::after {
    position: absolute;
    right: 18%;
    bottom: -120px;
    width: min(44vw, 540px);
    height: 260px;
    border: 12px solid rgba(22, 118, 88, .11);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-11deg);
    content: "";
    pointer-events: none;
}

.partner-ads-copy {
    position: relative;
    z-index: 1;
    display: grid;
    align-content: center;
    justify-items: start;
    max-width: 760px;
    min-height: 210px;
}

.partner-ads-copy h1 {
    max-width: 780px;
    margin-bottom: 14px;
    font-size: clamp(38px, 6vw, 68px);
    line-height: .96;
}

.partner-ads-copy p {
    max-width: 650px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.partner-ads-actions,
.partner-ads-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.partner-ads-stats {
    margin-top: 18px;
}

.partner-ads-stats span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .76);
    color: var(--muted);
    font-weight: 800;
}

.partner-ads-stats strong {
    color: var(--text);
    font-size: 20px;
}

.partner-ads-layout {
    grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
}

.partner-ads-main,
.partner-campaign-panel {
    min-width: 0;
}

.partner-form-card {
    display: grid;
    gap: 14px;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: var(--shadow-soft);
}

.partner-form-card > .section-head-row {
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(22, 118, 88, .12);
}

.partner-ad-form .form-section {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.partner-form-step {
    display: grid;
    gap: 12px;
    padding: 16px;
    border: 1px solid rgba(22, 118, 88, .16);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .025) 1px, transparent 1px),
        rgba(255, 255, 255, .86);
    background-size: 44px 44px;
}

.partner-form-step-title {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: start;
}

.partner-form-step-title > span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--accent);
    color: #fff;
    font-weight: 900;
    box-shadow: 0 10px 22px rgba(22, 118, 88, .22);
}

.partner-form-step-title h3,
.partner-form-step-title p {
    margin: 0;
}

.partner-form-step-title p {
    margin-top: 3px;
    color: var(--muted);
    font-weight: 700;
}

.partner-submit-row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    padding: 16px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 8px;
    background: #edf6f2;
}

.partner-submit-row span {
    color: var(--muted);
    font-weight: 800;
}

.partner-campaign-panel {
    position: sticky;
    top: 86px;
}

.partner-campaign-panel > .section-head-row {
    margin-bottom: 12px;
}

.partner-campaign-panel > .section-head-row span {
    display: grid;
    place-items: center;
    min-width: 34px;
    height: 34px;
    padding: 0 10px;
    border-radius: 999px;
    background: var(--soft);
    color: var(--accent-strong);
    font-weight: 900;
}

.partner-campaign-list {
    display: grid;
    gap: 12px;
}

.partner-campaign-card {
    position: relative;
    display: grid;
    gap: 8px;
    padding: 16px;
    overflow: hidden;
}

.partner-campaign-card::before {
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: var(--accent);
    content: "";
}

.partner-campaign-card h3,
.partner-campaign-card p {
    margin: 0;
}

.partner-campaign-card time {
    color: var(--muted);
    font-weight: 800;
}

.partner-campaign-card.is-empty {
    min-height: 160px;
    align-content: center;
    background: #f8fbfa;
}

.journals-create-panel h2,
.journals-create-panel h3,
.journals-create-panel p {
    margin-top: 0;
}

.private-journal-line {
    display: grid;
    gap: 4px;
    padding: 10px 0;
    border-top: 1px solid rgba(188, 209, 202, .72);
}

.private-journal-line a {
    color: var(--accent);
    font-weight: 900;
}

.hunts-page {
    display: grid;
    gap: 22px;
}

.hunts-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(320px, 520px);
    gap: clamp(18px, 4vw, 38px);
    align-items: stretch;
    min-height: 330px;
    padding: clamp(24px, 5vw, 44px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 48%, rgba(228, 241, 235, .7) 100%),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.hunts-hero::after {
    position: absolute;
    left: 26%;
    bottom: -140px;
    width: min(45vw, 620px);
    height: 280px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-12deg);
    content: "";
    pointer-events: none;
}

.hunts-hero-copy,
.hunts-hero-map {
    position: relative;
    z-index: 1;
}

.hunts-hero-copy {
    display: grid;
    align-content: center;
    justify-items: start;
}

.hunts-hero h1 {
    max-width: 780px;
    margin-bottom: 14px;
    font-size: clamp(38px, 6vw, 68px);
    line-height: .96;
}

.hunts-hero p {
    max-width: 700px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.hunts-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 18px;
}

.hunts-stats span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .78);
    color: var(--muted);
    font-weight: 800;
}

.hunts-stats strong {
    color: var(--text);
    font-size: 20px;
}

.hunts-hero-map {
    min-height: 260px;
    overflow: hidden;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(238, 246, 242, .82), rgba(222, 237, 246, .72)),
        url("https://tile.openstreetmap.org/7/62/46.png") center / cover no-repeat,
        #e9f3ef;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .75);
}

.hunt-route-line {
    position: absolute;
    left: 12%;
    top: 58%;
    width: 74%;
    height: 5px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--accent), var(--blue), var(--yellow));
    transform: rotate(-12deg);
    box-shadow: 0 10px 24px rgba(18, 37, 31, .16);
}

.hunt-map-pin {
    position: absolute;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border: 4px solid #fff;
    border-radius: 50%;
    color: #fff;
    font-weight: 950;
    box-shadow: 0 12px 28px rgba(18, 37, 31, .22);
}

.hunt-map-pin-one {
    left: 18%;
    top: 44%;
    background: var(--accent);
}

.hunt-map-pin-two {
    left: 52%;
    top: 34%;
    background: var(--blue);
}

.hunt-map-pin-three {
    right: 12%;
    bottom: 24%;
    background: var(--yellow);
    color: var(--text);
}

.hunts-hero-map article {
    position: absolute;
    left: 7%;
    right: 7%;
    bottom: 22px;
    display: grid;
    gap: 5px;
    padding: 16px;
    border: 1px solid rgba(188, 209, 202, .78);
    border-radius: 8px;
    background: rgba(255, 255, 255, .88);
    box-shadow: var(--shadow-soft);
}

.hunts-hero-map strong {
    font-size: 22px;
}

.hunts-hero-map small {
    color: var(--muted);
    font-weight: 700;
}

.hunt-card-grid {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.hunt-card {
    position: relative;
    display: grid;
    gap: 12px;
    overflow: hidden;
    border-top: 4px solid var(--accent);
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .045) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .035) 1px, transparent 1px),
        rgba(255, 255, 255, .92);
    background-size: 52px 52px;
}

.hunt-card.is-test-visible {
    border-top-color: var(--yellow);
}

.hunt-card-head,
.hunt-card-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.hunt-card-head {
    justify-content: space-between;
}

.hunt-card-head > span:last-child,
.hunt-card-facts span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 10px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--accent-strong);
    font-size: 13px;
    font-weight: 900;
}

.hunt-card h3,
.hunt-card p {
    margin: 0;
}

.hunt-card h3 {
    font-size: 24px;
}

.hunt-location {
    font-weight: 800;
}

.point-action-box {
    display: grid;
    grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr);
    gap: 14px;
    align-items: center;
    padding: 14px 16px;
    border: 1px solid rgba(22, 118, 88, .2);
    border-radius: 10px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
}

.point-action-box h2,
.point-action-box p {
    margin: 0;
}

.point-action-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    justify-content: flex-end;
}

.point-action-buttons .field-hint {
    flex-basis: 100%;
    text-align: right;
}

.trip-add-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.trip-add-form label,
.trip-add-form button {
    min-width: 0;
}

.trip-add-form label:nth-child(3) {
    grid-column: 1 / -1;
}

.trip-route-map {
    min-height: 520px;
    margin-bottom: 20px;
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow-soft);
}

.trip-detail-page {
    display: grid;
    gap: 18px;
}

.trip-detail-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: clamp(18px, 3vw, 28px);
    border: 1px solid rgba(22, 118, 88, .28);
    border-top: 6px solid var(--accent);
    border-radius: 8px;
    background:
        radial-gradient(circle at 82% 12%, rgba(39, 111, 191, .16), transparent 30%),
        linear-gradient(100deg, rgba(255, 255, 255, .98) 0%, rgba(241, 249, 245, .93) 58%, rgba(223, 240, 233, .78) 100%),
        linear-gradient(90deg, rgba(22, 118, 88, .026) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .022) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, auto, 96px 96px, 96px 96px;
    box-shadow: var(--shadow-soft);
}

.trip-detail-copy {
    min-width: 0;
}

.trip-detail-copy h1 {
    max-width: 860px;
    margin-bottom: 8px;
    font-size: clamp(38px, 6vw, 70px);
    line-height: .96;
}

.trip-detail-copy p {
    max-width: 760px;
    margin: 0;
    color: var(--muted);
    font-size: 19px;
    line-height: 1.45;
}

.trip-detail-hero .point-detail-actions {
    justify-content: flex-start;
    max-width: none;
    overflow: visible;
    padding-top: 14px;
    border-top: 1px solid rgba(22, 118, 88, .16);
}

.trip-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px;
}

.trip-summary-grid div {
    min-width: 0;
    padding: 13px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: 0 12px 30px rgba(18, 37, 31, .07);
}

.trip-summary-grid strong {
    display: block;
    color: var(--text);
    font-size: clamp(20px, 1.6vw, 28px);
    line-height: 1;
    overflow-wrap: anywhere;
}

.trip-summary-grid span {
    display: block;
    margin-top: 6px;
    color: var(--muted);
    font-size: 14px;
    font-weight: 800;
}

.trip-share-control-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    align-items: center;
    padding: 18px;
    border: 1px solid rgba(22, 118, 88, .22);
    border-left: 5px solid var(--accent);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
}

.trip-share-control-panel h2 {
    margin: 4px 0;
    font-size: clamp(24px, 3vw, 34px);
    line-height: 1.08;
}

.trip-share-control-panel p {
    max-width: 760px;
    margin: 0 0 10px;
    color: var(--muted);
}

.trip-share-control-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    justify-content: flex-end;
    max-width: 520px;
}

.trip-share-control-actions form {
    margin: 0;
}

.trip-section-head {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 12px;
}

.trip-section-head h2 {
    margin: 0;
}

.trip-day-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    max-width: 100%;
}

.trip-day-filter label {
    display: grid;
    gap: 5px;
    color: var(--muted);
    font-weight: 900;
}

.trip-day-filter select {
    min-width: min(360px, 82vw);
    min-height: 44px;
    padding: 9px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    font: inherit;
    font-weight: 850;
}

.trip-gpx-days {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    max-width: 100%;
    color: var(--muted);
    font-weight: 800;
}

.trip-day-filter .button {
    min-height: 38px;
    padding: 8px 12px;
}

.trip-day-filter .button.is-active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

.journal-day-filter {
    margin: 0 0 14px;
}

.journal-day-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 8px 0 4px;
    padding: 12px 14px;
    border: 1px solid rgba(22, 118, 88, .22);
    border-left: 5px solid var(--accent);
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(22, 118, 88, .1), rgba(255, 255, 255, .96));
    box-shadow: var(--shadow-soft);
}

.journal-day-banner strong {
    font-size: 1.04rem;
}

.journal-day-banner span {
    color: var(--muted);
    font-weight: 800;
}

.trip-card,
.trip-point-card {
    border-left: 5px solid var(--accent);
}

.trip-section-toggle,
.trip-card-toggle {
    flex: 0 0 auto;
}

.trip-card-toggle {
    margin-left: auto;
}

.trip-point-card.is-collapsed .trip-point-extra {
    display: none !important;
}

.trip-point-card.is-collapsed {
    padding-bottom: 14px;
}

.map-trip-date-buttons button.is-in-range {
    border-color: rgba(22, 118, 88, .46);
    background: rgba(22, 118, 88, .14);
    color: var(--accent-strong);
}

@media (max-width: 720px) {
    .trip-section-toggle {
        width: 100%;
    }

    .trip-point-card.is-idea-point {
        margin-left: 0;
    }

    .trip-card-toggle {
        min-height: 38px;
        padding: 7px 12px;
    }
}

.trip-point-card.tone-green { border-left-color: var(--accent); }
.trip-point-card.tone-blue { border-left-color: var(--blue); }
.trip-point-card.tone-yellow { border-left-color: var(--yellow); }
.trip-point-card.tone-purple { border-left-color: var(--purple); }
.trip-point-card.tone-orange { border-left-color: var(--orange); }
.trip-point-card.tone-red { border-left-color: var(--danger); }

.trip-point-card.tone-green,
.trip-point-card.tone-blue,
.trip-point-card.tone-yellow,
.trip-point-card.tone-purple,
.trip-point-card.tone-orange,
.trip-point-card.tone-red {
    color: var(--text);
}

.trip-point-card.tone-green { background: linear-gradient(135deg, rgba(22, 118, 88, .14), rgba(255, 255, 255, .96) 42%); }
.trip-point-card.tone-blue { background: linear-gradient(135deg, rgba(39, 111, 191, .14), rgba(255, 255, 255, .96) 42%); }
.trip-point-card.tone-yellow { background: linear-gradient(135deg, rgba(226, 155, 24, .18), rgba(255, 255, 255, .96) 42%); }
.trip-point-card.tone-purple { background: linear-gradient(135deg, rgba(125, 91, 214, .14), rgba(255, 255, 255, .96) 42%); }
.trip-point-card.tone-orange { background: linear-gradient(135deg, rgba(217, 116, 54, .16), rgba(255, 255, 255, .96) 42%); }
.trip-point-card.tone-red { background: linear-gradient(135deg, rgba(205, 71, 67, .14), rgba(255, 255, 255, .96) 42%); }

.trip-point-card h3 {
    color: var(--text);
}

.trip-point-list[data-trip-sortable] .trip-point-card,
.journal-entry-list[data-journal-sortable] .journal-entry-card {
    cursor: grab;
}

.trip-point-card.is-dragging {
    opacity: .58;
    cursor: grabbing;
}

.trip-point-card.is-paused {
    border-left-color: var(--muted);
    background: rgba(255, 255, 255, .76);
}

.trip-point-card.is-paused h3,
.trip-point-card.is-paused p,
.trip-point-card.is-paused time {
    opacity: .72;
}

.trip-point-main {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 12px;
    align-items: start;
}

.trip-point-meta-line {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-bottom: 4px;
}

.trip-leg-distance {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef7f3;
    color: var(--accent-strong);
    font-weight: 800;
}

.trip-leg-distance.is-idea {
    background: #fff4dc;
    color: #8a5808;
}

.trip-point-card.is-idea-point {
    margin-left: 22px;
    border-left-style: dashed;
}

.trip-day-banner {
    margin-top: 14px;
}

.trip-pagination {
    justify-content: center;
    margin-top: 12px;
}

.trip-pagination button:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.trip-point-date-form {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-end;
    margin-top: 0;
}

.trip-point-date-form label {
    display: grid;
    gap: 4px;
    min-width: 220px;
    color: var(--muted);
    font-weight: 800;
}

.trip-point-date-form input,
.trip-point-date-form select {
    min-height: 42px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    font: inherit;
    font-weight: 700;
}

.trip-point-date-form button {
    min-height: 42px;
    white-space: nowrap;
}

.trip-drag-handle {
    cursor: grab;
}

.trip-point-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}

@media (max-width: 920px) {
    .trip-point-main {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .trip-point-date-form {
        grid-column: 1 / -1;
        margin-top: 10px;
    }

    .shared-trip-head {
        display: grid;
    }
}

.trip-point-card form {
    margin: 0;
}

.trip-share-code {
    display: block;
    max-width: 100%;
    padding: 10px;
    overflow: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--text);
}

.trip-share-page {
    display: grid;
    gap: 18px;
}

.trip-share-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    padding: clamp(18px, 3vw, 30px);
    border: 1px solid rgba(22, 118, 88, .24);
    border-top: 6px solid var(--accent);
    border-radius: 8px;
    background:
        radial-gradient(circle at 86% 18%, rgba(226, 155, 24, .15), transparent 28%),
        linear-gradient(110deg, rgba(255, 255, 255, .98), rgba(237, 247, 242, .9)),
        linear-gradient(90deg, rgba(22, 118, 88, .026) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .022) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, auto, 96px 96px, 96px 96px;
    box-shadow: var(--shadow-soft);
}

.trip-share-hero h1 {
    max-width: 860px;
    margin-bottom: 8px;
    font-size: clamp(38px, 6vw, 72px);
    line-height: .96;
}

.trip-share-hero p {
    max-width: 760px;
    margin: 0 0 14px;
    color: var(--muted);
    font-size: 19px;
    line-height: 1.45;
}

.trip-share-layout {
    align-items: stretch;
}

.trip-share-link-card,
.trip-share-qr-card,
.trip-share-settings-card {
    border-top: 5px solid var(--accent);
}

.trip-share-link-card {
    display: grid;
    align-content: start;
    gap: 12px;
}

.trip-share-link-card .trip-share-code,
.trip-share-qr-card .trip-share-code {
    border-color: rgba(22, 118, 88, .18);
    background: #f4faf7;
    font-size: 14px;
    line-height: 1.45;
}

.trip-share-qr-card {
    display: grid;
    align-content: start;
    gap: 12px;
}

.trip-share-qr-card .trip-qr-image {
    justify-self: start;
}

.trips-shared-page {
    display: grid;
    gap: 18px;
}

.trips-shared-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 440px);
    align-items: stretch;
    gap: clamp(18px, 4vw, 42px);
    min-height: 320px;
    padding: clamp(22px, 4vw, 44px);
    border: 1px solid rgba(22, 118, 88, .24);
    border-top: 6px solid var(--accent-strong);
    border-radius: 8px;
    background:
        linear-gradient(110deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .92) 50%, rgba(237, 247, 242, .76) 100%),
        radial-gradient(circle at 78% 22%, rgba(39, 111, 191, .2), transparent 28%),
        radial-gradient(circle at 70% 70%, rgba(22, 118, 88, .18), transparent 34%),
        repeating-linear-gradient(118deg, rgba(22, 118, 88, .14) 0 3px, transparent 3px 58px),
        repeating-linear-gradient(22deg, rgba(39, 111, 191, .12) 0 2px, transparent 2px 72px),
        #f8fbfa;
    box-shadow: var(--shadow-soft);
    overflow: hidden;
}

.trips-shared-copy {
    display: grid;
    align-content: center;
    justify-items: start;
}

.trips-shared-hero h1 {
    max-width: 720px;
    margin-bottom: 8px;
    font-size: clamp(44px, 7vw, 86px);
    line-height: .96;
}

.trips-shared-hero p {
    max-width: 760px;
    margin: 0;
    color: var(--muted);
    font-size: 19px;
    line-height: 1.45;
}

.trips-shared-preview {
    position: relative;
    min-height: 240px;
    align-self: center;
    border: 1px solid rgba(22, 118, 88, .24);
    border-radius: 8px;
    background:
        linear-gradient(180deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .7)),
        radial-gradient(circle at 22% 72%, rgba(22, 118, 88, .26), transparent 24%),
        radial-gradient(circle at 74% 28%, rgba(39, 111, 191, .22), transparent 28%),
        repeating-linear-gradient(142deg, rgba(22, 118, 88, .2) 0 4px, transparent 4px 68px),
        repeating-linear-gradient(32deg, rgba(39, 111, 191, .14) 0 3px, transparent 3px 84px),
        #edf7f2;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .68);
}

.shared-preview-pin {
    position: absolute;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 4px solid #fff;
    border-radius: 999px;
    background: var(--accent-strong);
    color: #fff;
    font-weight: 900;
    box-shadow: 0 10px 24px rgba(18, 37, 31, .28);
}

.shared-preview-pin.pin-one { left: 18%; top: 26%; }
.shared-preview-pin.pin-two { right: 18%; top: 36%; background: var(--blue); }
.shared-preview-pin.pin-three { left: 46%; bottom: 20%; background: var(--yellow); color: var(--text); }

.shared-preview-card {
    position: absolute;
    right: 22px;
    bottom: 22px;
    display: grid;
    min-width: 190px;
    padding: 16px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: var(--shadow-soft);
}

.shared-preview-card strong {
    font-size: 38px;
    line-height: 1;
}

.shared-preview-card span {
    color: var(--muted);
    font-weight: 800;
}

.trips-shared-stats {
    margin: 0;
}

.trips-shared-list {
    gap: 14px;
}

.shared-trip-card {
    display: grid;
    gap: 12px;
    border-left-color: var(--muted);
    background: rgba(255, 255, 255, .92);
}

.shared-trip-card.is-ready {
    border-left-color: var(--accent);
    background: linear-gradient(135deg, rgba(22, 118, 88, .1), rgba(255, 255, 255, .96) 40%);
}

.shared-trip-card.is-blocked {
    border-left-color: var(--yellow);
    background: linear-gradient(135deg, rgba(226, 155, 24, .14), rgba(255, 255, 255, .96) 40%);
}

.shared-trip-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: flex-start;
}

.shared-trip-head h3 {
    margin: 4px 0 0;
}

.shared-trip-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.shared-trip-meta span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef7f3;
    color: var(--text);
    font-weight: 850;
}

.shared-trip-status {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef7f3;
    color: var(--accent-strong);
    font-weight: 900;
    white-space: nowrap;
}

.shared-trip-card.is-blocked .shared-trip-status {
    background: #fff5dc;
    color: #8a5a00;
}

.shared-trip-card .public-share-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.journal-workspace {
    width: 100%;
}

.journal-detail-page {
    max-width: min(1540px, calc(100% - 28px));
    padding-top: 28px;
}

.page-head.with-actions.journal-detail-head {
    display: grid;
    grid-template-columns: 1fr;
}

.journal-detail-head {
    align-items: flex-start;
    position: relative;
    overflow: hidden;
    margin-bottom: 16px;
    padding: clamp(20px, 4vw, 34px);
    border: 1px solid var(--line);
    border-top: 5px solid var(--accent);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .92) 52%, rgba(255, 255, 255, .66) 100%),
        url("https://tile.openstreetmap.org/7/62/46.png") right center / 46% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .055) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .04) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 46% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.journal-detail-head::after {
    position: absolute;
    right: 18%;
    bottom: -120px;
    width: min(46vw, 620px);
    height: 260px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-11deg);
    content: "";
    pointer-events: none;
}

.journal-head-title {
    position: relative;
    z-index: 1;
    min-width: 0;
}

.journal-detail-head h1 {
    font-size: clamp(42px, 5.5vw, 82px);
    line-height: .92;
    max-width: 820px;
}

.journal-detail-head p {
    max-width: 760px;
    margin-bottom: 0;
}

.journal-detail-head .page-actions {
    position: relative;
    z-index: 14;
    align-self: flex-start;
    width: 100%;
    max-width: none;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(14px);
}

.journal-detail-head .point-detail-actions {
    flex-wrap: wrap;
    justify-content: flex-start;
    overflow: visible;
}

.journal-detail-head .point-detail-actions .button,
.journal-detail-head .point-detail-actions button,
.journal-detail-head .point-detail-actions .share-disabled-note {
    flex: 0 1 auto;
    min-width: max-content;
}

.journal-meta-tags {
    margin-top: 12px;
}

.journal-delete-box {
    margin-top: 16px;
    padding: 12px;
    border: 1px solid rgba(211, 75, 68, .28);
    border-radius: 10px;
    background: rgba(255, 247, 245, .8);
}

.journal-delete-box summary {
    cursor: pointer;
    font-weight: 800;
    color: var(--danger);
}

.journal-delete-box form {
    margin-top: 10px;
}

.journal-meta-tags span {
    background: #edf6f2;
    border: 1px solid #d7e8e1;
}

.journal-main-map,
.journal-main-map.is-real-world-map {
    position: relative;
    width: 100%;
    min-height: 620px;
    height: min(72vh, 760px);
    margin-bottom: 30px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.section-head-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 8px 0 14px;
}

.journal-modal {
    max-width: 780px;
}

.image-preview-card {
    display: grid;
    place-items: center;
    min-height: 150px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(18, 37, 31, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(18, 37, 31, .06) 1px, transparent 1px),
        #edf6f2;
    background-size: 36px 36px;
    color: var(--muted);
    font-weight: 900;
}

.image-preview-card img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.journal-cover-preview {
    aspect-ratio: 16 / 9;
    max-height: 260px;
}

.journal-book-hero {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
    gap: 22px;
    align-items: stretch;
    margin: 0 0 24px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.journal-book-hero.no-cover {
    display: block;
    max-width: 900px;
    min-height: 0;
}

.journal-book-hero-image {
    display: grid;
    place-items: center;
    min-height: 360px;
    padding: 24px;
    background:
        linear-gradient(135deg, rgba(22, 118, 88, .86), rgba(39, 111, 191, .78)),
        linear-gradient(90deg, rgba(255, 255, 255, .16) 1px, transparent 1px),
        linear-gradient(0deg, rgba(255, 255, 255, .16) 1px, transparent 1px);
    background-size: cover, 44px 44px, 44px 44px;
    background-position: center;
    color: #fff;
    font-size: clamp(32px, 5vw, 76px);
    font-weight: 900;
    line-height: .94;
    text-align: center;
}

.journal-book-hero-image.has-image {
    background-size: cover;
    background-position: center;
}

.journal-book-hero-copy {
    display: grid;
    align-content: center;
    gap: 14px;
    padding: clamp(22px, 4vw, 48px);
}

.journal-book-hero-copy h2 {
    margin: 0;
    font-size: clamp(34px, 4.8vw, 70px);
    line-height: .96;
}

.journal-book-style-blog .journal-book-hero {
    grid-template-columns: 1fr;
}

.journal-book-style-blog .journal-book-hero-image {
    min-height: 460px;
}

.journal-book-style-photo_book .journal-book-hero {
    background: #111f2c;
    color: #fff;
}

.journal-book-style-photo_book .journal-book-hero-copy p,
.journal-book-style-photo_book .journal-book-hero-copy .eyebrow {
    color: rgba(255, 255, 255, .78);
}

.journal-book-style-minimal .journal-book-hero {
    grid-template-columns: 1fr;
    box-shadow: none;
}

.journal-book-style-minimal .journal-book-hero-image {
    display: none;
}

.journal-header-style-clean_title .journal-book-hero-image {
    display: none;
}

.journal-is-share .journal-book-hero-image,
.journal-public-intro .journal-book-hero-image {
    display: grid;
}

.journal-header-style-clean_title .journal-book-hero,
.journal-header-style-postcard .journal-book-hero {
    grid-template-columns: 1fr;
}

.journal-public-intro {
    grid-template-columns: 1fr;
    margin-bottom: 28px;
}

.journal-public-intro.no-cover {
    margin-bottom: 12px;
}

.journal-public-intro .journal-book-hero-copy {
    order: -1;
}

.journal-public-intro .journal-book-hero-image {
    min-height: 420px;
}

.journal-public-intro .journal-book-hero-copy p {
    font-size: 1.08rem;
    color: var(--muted);
}

.journal-is-share.journal-detail-page {
    display: grid;
    gap: 20px;
    padding-top: 18px;
}

.journal-is-share .journal-detail-head {
    margin-bottom: 0;
}

.journal-is-share .journal-book-hero {
    align-items: start;
    min-height: 0;
    margin-bottom: 0;
}

.journal-is-share .journal-public-intro {
    display: block;
    min-height: auto;
}

.journal-is-share .journal-public-intro .journal-book-hero-copy {
    align-content: start;
    min-height: 0;
    padding: clamp(20px, 3vw, 34px);
}

.journal-is-share .journal-public-intro.no-cover .journal-book-hero-copy {
    gap: 8px;
    padding: 18px 22px;
}

.journal-is-share .journal-public-intro .journal-book-hero-copy h2 {
    max-width: 760px;
    font-size: clamp(30px, 3.4vw, 50px);
    line-height: 1;
}

.journal-is-share .journal-public-intro.no-cover .journal-book-hero-copy h2 {
    font-size: clamp(24px, 2.5vw, 36px);
}

.journal-is-share .journal-public-intro .journal-book-hero-copy p {
    max-width: 760px;
    margin: 0;
    font-size: 1rem;
}

.journal-is-share .journal-public-intro .journal-book-hero-copy .tags {
    margin-top: 4px;
}

.journal-is-share .journal-public-intro .journal-book-hero-image {
    min-height: 180px;
}

.journal-is-share .journal-public-intro .journal-book-hero-image:not(.has-image) {
    display: none;
}

.journal-book-hero.no-cover .journal-book-hero-image {
    display: none;
}

.journal-is-share .journal-public-intro:not(:has(.journal-book-hero-image.has-image)) {
    display: grid;
    grid-template-columns: 1fr;
    max-width: 860px;
    min-height: 0;
    margin-bottom: 16px;
}

.journal-is-share .journal-public-intro:not(:has(.journal-book-hero-image.has-image)) .journal-book-hero-copy {
    display: grid;
    align-content: start;
    gap: 10px;
    min-height: 0;
    padding: 18px 22px;
}

.journal-is-share .journal-public-intro:not(:has(.journal-book-hero-image.has-image)) .journal-book-hero-copy h2 {
    font-size: clamp(24px, 2.5vw, 36px);
}

.journal-is-share .journal-main-map,
.journal-is-share .journal-main-map.is-real-world-map {
    min-height: 430px;
    height: min(58vh, 620px);
    margin-bottom: 0;
}

.journal-is-share .user-card,
.journal-is-share .trip-point-card {
    padding: clamp(18px, 3vw, 28px);
}

.journal-is-share .journal-date-timeline,
.journal-is-share .journal-gallery {
    margin: 0;
}

.journal-is-share .journal-entry-list {
    gap: 0;
}

.journal-is-share .journal-entry-card {
    min-height: auto;
    padding: clamp(24px, 4vw, 48px) 0;
    overflow: visible;
    border: 0;
    border-top: 1px solid rgba(17, 126, 89, .16);
    border-radius: 0;
    box-shadow: none;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .78), rgba(255, 255, 255, .34) 66%, rgba(237, 246, 242, .18)),
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .028) 1px, transparent 1px),
        transparent;
    background-size: auto, 48px 48px, 48px 48px, auto;
}

.journal-is-share .journal-entry-book-grid {
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
    gap: clamp(18px, 4vw, 52px);
    max-width: 1120px;
    margin: 0 auto;
}

.journal-is-share .journal-entry-card:not(:has(.journal-entry-media)) .journal-entry-book-grid {
    grid-template-columns: 1fr;
}

.journal-is-share .journal-entry-media {
    grid-template-columns: repeat(auto-fit, minmax(180px, 280px));
    align-items: start;
    justify-content: start;
    order: 0;
}

.journal-is-share .journal-entry-copy {
    align-self: center;
}

.journal-is-share .journal-entry-copy time {
    display: inline-flex;
    margin-bottom: 6px;
    color: var(--muted);
    font-weight: 700;
}

.journal-is-share .journal-entry-copy h3 {
    margin-bottom: 12px;
    font-size: clamp(24px, 2.4vw, 32px);
    line-height: 1.12;
}

.journal-is-share .journal-entry-copy p {
    max-width: 760px;
}

.journal-is-share .journal-photo-summary {
    display: none;
}

.journal-is-share .journal-layout-photo_first .journal-entry-media {
    order: -1;
}

.journal-is-share .journal-layout-split_left .journal-entry-book-grid,
.journal-is-share .journal-layout-split_right .journal-entry-book-grid {
    grid-template-columns: minmax(220px, .8fr) minmax(0, 1.2fr);
}

.journal-is-share .journal-layout-split_left .journal-entry-media {
    order: -1;
}

.journal-is-share .journal-layout-split_right .journal-entry-media {
    order: 2;
}

.journal-is-share .journal-layout-mosaic .journal-entry-media {
    grid-template-columns: repeat(2, minmax(140px, 1fr));
}

.journal-is-share .journal-layout-mosaic .journal-entry-media figure:first-child {
    grid-row: span 2;
}

.journal-is-share .journal-layout-postcard {
    padding-inline: clamp(14px, 3vw, 32px);
    background:
        linear-gradient(100deg, rgba(255, 250, 240, .82), rgba(255, 255, 255, .48)),
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .028) 1px, transparent 1px);
}

.journal-is-share .journal-layout-compact .journal-entry-media {
    display: none;
}

.entry-public-location {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.entry-gps-link {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 7px 11px;
    border: 1px solid rgba(17, 126, 89, .24);
    border-radius: 999px;
    background: #e7f6ee;
    color: var(--accent);
    font-weight: 900;
    text-decoration: none;
}

.entry-gps-link:hover,
.entry-gps-link:focus-visible {
    border-color: rgba(17, 126, 89, .44);
    background: #d9f0e6;
    outline: none;
}

.journal-header-style-postcard .journal-book-hero {
    transform: rotate(-.35deg);
    border: 10px solid #fff;
}

.journal-entry-book-grid {
    display: grid;
    gap: 18px;
}

.journal-entry-copy {
    min-width: 0;
}

.journal-entry-media {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 10px;
}

.journal-entry-media figure {
    width: 100%;
    justify-self: start;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.journal-entry-media figure.has-broken-image::before {
    display: grid;
    place-items: center;
    min-height: 170px;
    padding: 18px;
    background: #f5faf8;
    color: var(--muted);
    font-weight: 800;
    text-align: center;
    content: "Image non chargee";
}

.journal-entry-media figure.is-clickable-edit,
.entry-edit-shortcut[role="button"],
.journal-photo-summary.is-clickable-edit {
    cursor: pointer;
}

.journal-entry-media figure.is-clickable-edit:hover,
.journal-entry-media figure.is-clickable-edit:focus-visible,
.journal-photo-summary.is-clickable-edit:hover,
.journal-photo-summary.is-clickable-edit:focus-visible {
    border-color: rgba(17, 126, 89, .5);
    box-shadow: 0 14px 30px rgba(8, 29, 23, .16);
    outline: none;
}

.entry-edit-shortcut[role="button"]:focus-visible span,
.entry-edit-shortcut[role="button"]:hover span {
    border-color: rgba(17, 126, 89, .34);
    background: #e7f6ee;
}

.journal-entry-media img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    max-height: 360px;
    object-fit: cover;
    transition: filter .2s ease, transform .2s ease;
}

.journal-entry-media img.is-broken {
    display: none;
}

.journal-entry-media figure[style*="--photo-custom-height"] img {
    height: var(--photo-custom-height);
    aspect-ratio: auto;
}

.journal-entry-media figcaption {
    min-height: 36px;
    padding: 8px 10px;
    color: var(--muted);
    font-size: .92rem;
}

.journal-entry-media .photo-fit-original img,
.journal-entry-media .photo-fit-contain img {
    object-fit: contain;
    background: #f5faf8;
}

.journal-entry-media .photo-fit-square img,
.journal-photo-manager .photo-fit-square img {
    aspect-ratio: 1;
}

.journal-entry-media .photo-fit-wide img,
.journal-photo-manager .photo-fit-wide img {
    aspect-ratio: 16 / 9;
}

.journal-entry-media .photo-fit-portrait img,
.journal-photo-manager .photo-fit-portrait img {
    aspect-ratio: 3 / 4;
}

.journal-entry-media .photo-fit-classic img,
.journal-photo-manager .photo-fit-classic img {
    aspect-ratio: 3 / 2;
}

.journal-entry-media .photo-fit-classic_portrait img,
.journal-photo-manager .photo-fit-classic_portrait img {
    aspect-ratio: 2 / 3;
}

.journal-entry-media .photo-fit-tall img,
.journal-photo-manager .photo-fit-tall img {
    aspect-ratio: 9 / 16;
}

.journal-entry-media .photo-fit-custom img,
.journal-photo-manager .photo-fit-custom img,
.journal-photo-thumb.photo-fit-custom .thumb-frame {
    aspect-ratio: var(--photo-crop-ratio, 4 / 3);
}

.journal-is-editor .journal-entry-media {
    grid-template-columns: repeat(auto-fit, minmax(86px, 118px));
    justify-content: start;
}

.journal-is-editor .journal-entry-media figure {
    box-shadow: none;
}

.journal-is-editor .journal-entry-media img {
    aspect-ratio: 1;
}

.journal-is-editor .journal-entry-media figcaption {
    display: none;
}

.journal-layout-photo_first .journal-entry-media {
    order: -1;
}

.journal-layout-split_left .journal-entry-book-grid,
.journal-layout-split_right .journal-entry-book-grid {
    grid-template-columns: minmax(260px, .95fr) minmax(0, 1.05fr);
    align-items: center;
}

.journal-layout-split_left .journal-entry-media {
    order: -1;
}

.journal-layout-split_right .journal-entry-media {
    order: 2;
}

.journal-layout-mosaic .journal-entry-media {
    grid-template-columns: 1.2fr .8fr;
}

.journal-layout-mosaic .journal-entry-media figure:first-child {
    grid-row: span 2;
}

.journal-layout-postcard {
    background: #fffaf0;
}

.journal-layout-postcard .journal-entry-media figure:nth-child(odd) {
    transform: rotate(-1.2deg);
}

.journal-layout-postcard .journal-entry-media figure:nth-child(even) {
    transform: rotate(1.2deg);
}

.journal-layout-compact .journal-entry-media {
    grid-template-columns: repeat(auto-fit, minmax(96px, 120px));
}

.journal-layout-compact .journal-entry-media figcaption {
    display: none;
}

.journal-entry-card .photo-tile {
    min-height: 76px;
    margin-top: 10px;
}

.journal-photo-summary {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--muted);
    appearance: none;
    font: inherit;
    text-align: left;
}

.journal-photo-summary strong {
    color: var(--text);
}

.journal-photo-summary span {
    padding: 4px 8px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-weight: 800;
}

.journal-photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 320px));
    justify-content: start;
    gap: 14px;
    margin-top: 12px;
}

.journal-is-share .journal-gallery {
    display: grid;
    gap: 16px;
    padding: clamp(18px, 3vw, 30px);
    overflow: hidden;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(246, 251, 249, .78)),
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .028) 1px, transparent 1px),
        #fff;
    background-size: auto, 46px 46px, 46px 46px, auto;
}

.journal-is-share .journal-gallery .section-head-row {
    align-items: end;
    margin-bottom: 0;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(17, 126, 89, .14);
}

.journal-is-share .journal-gallery .section-head-row h2 {
    font-size: clamp(28px, 3vw, 40px);
}

.journal-is-share .journal-gallery h3 {
    display: inline-flex;
    width: fit-content;
    margin: 2px 0 0;
    padding: 6px 12px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-size: 1rem;
    font-weight: 900;
}

.journal-is-share .journal-photo-grid {
    display: flex;
    grid-template-columns: none;
    gap: 14px;
    margin-top: 0;
    padding: 2px 4px 10px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
}

.journal-is-share .journal-photo-grid figure {
    flex: 0 0 min(72vw, 360px);
    scroll-snap-align: start;
    box-shadow: 0 14px 32px rgba(18, 37, 31, .08);
}

.journal-is-share .journal-photo-grid img {
    max-height: 260px;
}

.journal-is-share .journal-photo-grid figcaption {
    padding: 10px 12px;
    background: #fff;
    color: var(--text);
}

.journal-is-share .journal-photo-grid figcaption small {
    color: var(--muted);
}

.journal-gallery-dots {
    display: flex;
    justify-content: center;
    gap: 9px;
    margin-top: -2px;
}

.journal-gallery-dots span {
    width: 8px;
    height: 8px;
    border: 2px solid rgba(18, 37, 31, .25);
    border-radius: 999px;
    background: #fff;
}

.journal-gallery-dots span.active {
    background: var(--accent);
    border-color: var(--accent);
}

.journal-gallery-style-grid .journal-photo-grid,
.journal-gallery-style-mosaic .journal-photo-grid,
.journal-gallery-style-story .journal-photo-grid {
    overflow: visible;
    scroll-snap-type: none;
}

.journal-gallery-style-grid .journal-photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 260px));
    justify-content: start;
}

.journal-gallery-style-grid .journal-gallery-dots,
.journal-gallery-style-mosaic .journal-gallery-dots,
.journal-gallery-style-story .journal-gallery-dots {
    display: none;
}

.journal-gallery-style-grid .journal-photo-grid figure {
    flex: none;
}

.journal-gallery-style-mosaic .journal-photo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    grid-auto-flow: dense;
}

.journal-gallery-style-mosaic .journal-photo-grid figure {
    flex: none;
}

.journal-gallery-style-mosaic .journal-photo-grid figure:nth-child(4n + 1) {
    grid-column: span 2;
    grid-row: span 2;
}

.journal-gallery-style-mosaic .journal-photo-grid figure:nth-child(4n + 1) img {
    max-height: 360px;
}

.journal-gallery-style-story .journal-photo-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 22px;
    max-width: 980px;
}

.journal-gallery-style-story .journal-photo-grid figure {
    display: grid;
    grid-template-columns: minmax(180px, 360px) minmax(0, 1fr);
    align-items: center;
    gap: clamp(16px, 3vw, 36px);
    flex: none;
    padding: clamp(12px, 2vw, 18px);
    background:
        linear-gradient(110deg, rgba(255, 255, 255, .98), rgba(244, 250, 247, .82)),
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .028) 1px, transparent 1px);
    background-size: auto, 44px 44px, 44px 44px;
}

.journal-gallery-style-story .journal-photo-grid figcaption {
    border-top: 0;
    background: transparent;
    font-size: 1.05rem;
}

.journal-share-footnote {
    width: min(100%, 1120px);
    margin: 0 auto;
    color: var(--muted);
    font-weight: 700;
}

.journal-photo-grid figure {
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.journal-photo-grid img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    max-height: 280px;
    object-fit: cover;
}

.journal-photo-grid figure[style*="--photo-custom-height"] img {
    height: auto !important;
    aspect-ratio: 4 / 3;
}

.journal-photo-grid img.is-broken {
    display: none;
}

.journal-photo-grid figure.has-broken-image::before {
    display: grid;
    place-items: center;
    min-height: 180px;
    padding: 18px;
    background: #f5faf8;
    color: var(--muted);
    font-weight: 800;
    text-align: center;
    content: "Image non chargee";
}

.journal-photo-grid figcaption {
    padding: 8px;
    color: var(--muted);
    font-size: .9rem;
}

.journal-date-timeline,
.journal-gallery {
    margin: 16px 0;
}

.journal-gps-tracks {
    display: grid;
    gap: 10px;
    margin: 12px 0;
    padding: 18px 22px;
}

.journal-gps-head-actions {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
}

.journal-gps-add-menu {
    position: relative;
}

.journal-gps-add-menu summary {
    list-style: none;
}

.journal-gps-add-menu summary::-webkit-details-marker {
    display: none;
}

.compact-journal-gps-form {
    position: absolute;
    z-index: 30;
    right: 0;
    top: calc(100% + 8px);
    width: min(92vw, 560px);
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 22px 50px rgba(18, 37, 31, .16);
}

.journal-is-share .journal-comments .trip-add-form {
    grid-template-columns: minmax(0, 1fr);
    max-width: 760px;
}

.journal-is-share .journal-comments .trip-add-form label:nth-child(3) {
    grid-column: auto;
}

.journal-is-share .journal-comments .trip-add-form button {
    justify-self: start;
    min-width: 180px;
    width: auto;
    min-height: 48px;
    padding: 12px 24px;
}

.journal-date-groups {
    display: grid;
    gap: 10px;
}

.journal-date-groups article {
    display: grid;
    gap: 8px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.journal-date-groups h3,
.journal-gallery h3 {
    margin: 0;
}

.journal-date-groups a {
    color: var(--primary);
    font-weight: 800;
    text-decoration: none;
}

.private-note-box {
    display: grid;
    gap: 6px;
    margin: 12px 0;
    padding: 12px;
    border: 1px dashed #b8cfc6;
    border-radius: 8px;
    background: #f0f8f5;
    color: var(--text);
}

.private-note-box strong {
    color: var(--accent);
    font-size: .86rem;
    text-transform: uppercase;
}

.private-note-box p {
    margin: 0;
}

.journal-entry-editor {
    margin-top: 12px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.journal-entry-form-compact .form-grid {
    grid-template-columns: repeat(auto-fit, minmax(160px, 260px));
}

.journal-entry-form-compact > label,
.compact-journal-settings-form > label {
    max-width: 760px;
}

.journal-entry-form-compact > label:has(input[type="date"]),
.journal-entry-form-compact > label:has(select),
.journal-entry-form-compact > label:has(input[name="weather"]),
.journal-entry-form-compact > label:has(input[name="mood"]),
.journal-entry-form-compact > label:has(input[name="photo_caption"]),
.journal-entry-form-compact > label:has(input[name="country"]) {
    max-width: 360px;
}

.journal-entry-short-fields {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 260px));
    gap: 12px;
}

.journal-layout-picker {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    max-width: 780px;
    margin: 0;
    padding: 0;
    border: 0;
}

.journal-layout-picker legend {
    flex-basis: 100%;
    margin-bottom: 2px;
    color: var(--text);
    font-weight: 900;
}

.journal-layout-choice {
    position: relative;
    display: grid;
    gap: 5px;
    justify-items: center;
    width: 74px;
    min-height: 64px;
    padding: 8px 6px;
    border: 1px solid var(--line);
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
}

.journal-layout-choice input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.journal-layout-choice > span:last-child {
    overflow: hidden;
    width: 100%;
    color: var(--muted);
    font-size: 10px;
    font-weight: 800;
    line-height: 1.1;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.journal-layout-choice:has(input:checked) {
    border-color: var(--accent);
    background: var(--accent);
    color: #fff;
    box-shadow: 0 10px 22px rgba(17, 126, 89, .18);
}

.journal-layout-choice:has(input:checked) > span:last-child {
    color: #fff;
}

.layout-icon {
    position: relative;
    display: block;
    width: 38px;
    height: 24px;
}

.layout-icon::before,
.layout-icon::after,
.layout-icon i,
.layout-icon b {
    position: absolute;
    display: block;
    border-radius: 2px;
    background: currentColor;
    content: "";
}

.layout-icon::before,
.layout-icon::after {
    height: 4px;
}

.layout-icon i,
.layout-icon b {
    width: 12px;
    height: 18px;
}

.layout-text_first::before,
.layout-text_first::after {
    left: 5px;
    right: 5px;
}

.layout-text_first::before {
    top: 5px;
}

.layout-text_first::after {
    bottom: 5px;
}

.layout-text_first i {
    display: none;
}

.layout-photo_first i,
.layout-photo_first b {
    left: 4px;
    right: auto;
    width: 30px;
    height: 9px;
}

.layout-photo_first i {
    top: 3px;
}

.layout-photo_first b {
    bottom: 3px;
}

.layout-split_left i,
.layout-split_right i {
    top: 3px;
    height: 18px;
}

.layout-split_left i {
    left: 4px;
}

.layout-split_right i {
    right: 4px;
}

.layout-split_left::before,
.layout-split_left::after {
    left: 20px;
    right: 4px;
}

.layout-split_right::before,
.layout-split_right::after {
    left: 4px;
    right: 20px;
}

.layout-split_left::before,
.layout-split_right::before {
    top: 6px;
}

.layout-split_left::after,
.layout-split_right::after {
    bottom: 6px;
}

.layout-postcard i {
    left: 8px;
    top: 3px;
    width: 22px;
    height: 18px;
    transform: rotate(-8deg);
}

.layout-postcard::before,
.layout-postcard::after {
    display: none;
}

.layout-mosaic i,
.layout-mosaic b,
.layout-mosaic::before,
.layout-mosaic::after {
    width: 14px;
    height: 9px;
}

.layout-mosaic i {
    left: 4px;
    top: 3px;
}

.layout-mosaic b {
    right: 4px;
    top: 3px;
}

.layout-mosaic::before {
    left: 4px;
    bottom: 3px;
}

.layout-mosaic::after {
    right: 4px;
    bottom: 3px;
}

.layout-compact::before {
    left: 6px;
    right: 6px;
    top: 10px;
}

.layout-compact::after,
.layout-compact i,
.layout-compact b {
    display: none;
}

.journal-entry-editor summary {
    cursor: pointer;
    font-weight: 900;
}

.journal-photo-manager {
    display: grid;
    gap: 12px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
}

.compact-photo-manager h4 {
    margin: 0;
}

.journal-photo-thumb-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(118px, 160px));
    gap: 10px;
}

.journal-photo-thumb {
    display: grid;
    gap: 8px;
    width: 100%;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    text-align: left;
    cursor: pointer;
    box-shadow: var(--shadow-soft);
}

.journal-photo-thumb:hover,
.journal-photo-thumb:focus-visible {
    border-color: rgba(17, 126, 89, .5);
    box-shadow: 0 12px 24px rgba(18, 37, 31, .13);
}

.thumb-frame {
    display: block;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    border-radius: 6px;
    background: #f5faf8;
}

.journal-photo-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform-origin: center;
}

.journal-photo-thumb.photo-fit-original img,
.journal-photo-thumb.photo-fit-contain img {
    object-fit: contain;
}

.journal-photo-thumb.photo-fit-square .thumb-frame {
    aspect-ratio: 1;
}

.journal-photo-thumb.photo-fit-wide .thumb-frame {
    aspect-ratio: 16 / 9;
}

.journal-photo-thumb.photo-fit-portrait .thumb-frame {
    aspect-ratio: 3 / 4;
}

.journal-photo-thumb.photo-fit-classic .thumb-frame {
    aspect-ratio: 3 / 2;
}

.journal-photo-thumb.photo-fit-classic_portrait .thumb-frame {
    aspect-ratio: 2 / 3;
}

.journal-photo-thumb.photo-fit-tall .thumb-frame {
    aspect-ratio: 9 / 16;
}

.photo-thumb-meta {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.photo-thumb-meta strong {
    overflow: hidden;
    font-size: .88rem;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.journal-photo-manager article {
    display: grid;
    grid-template-columns: minmax(130px, 190px) 1fr;
    gap: 16px;
    align-items: start;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.photo-editor-preview {
    position: sticky;
    top: 86px;
    display: grid;
    gap: 8px;
}

.journal-photo-manager img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 6px;
}

.journal-photo-manager .photo-fit-contain img {
    object-fit: contain;
    background: #f5faf8;
}

.photo-visibility-badge {
    display: inline-flex;
    justify-content: center;
    padding: 7px 9px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-size: .86rem;
    font-weight: 900;
}

.photo-visibility-badge.is-private {
    background: #fff5e6;
    color: #7b4d00;
}

.photo-visibility-badge.is-public {
    background: #e7f6ee;
    color: var(--accent);
}

.photo-adjust-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}

.photo-adjust-row {
    display: grid;
    grid-template-columns: 1fr auto minmax(72px, 96px) auto;
    gap: 8px;
    align-items: center;
    padding: 9px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.photo-adjust-row span {
    color: var(--muted);
    font-weight: 900;
}

.photo-adjust-row input {
    min-height: 38px;
    padding: 6px;
    text-align: center;
}

.ghost.mini {
    min-height: 34px;
    padding: 6px 10px;
}

.photo-modal-card {
    width: min(1280px, 100%);
    max-height: min(94vh, 980px);
}

.photo-modal-form {
    margin: 0;
}

.photo-modal-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(320px, 420px);
    gap: 18px;
    padding: 18px;
}

.photo-edit-stage-wrap {
    display: grid;
    align-content: start;
    gap: 12px;
    min-width: 0;
}

.photo-edit-toolbar {
    display: block;
    min-width: 0;
}

.photo-crop-stage {
    position: relative;
    display: grid;
    overflow: hidden;
    place-items: center;
    aspect-ratio: 4 / 3;
    min-height: 420px;
    max-height: 68vh;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(45deg, #eef5f2 25%, transparent 25%) 0 0 / 24px 24px,
        linear-gradient(-45deg, #eef5f2 25%, transparent 25%) 0 12px / 24px 24px,
        #fff;
    cursor: default;
}

.photo-crop-stage.is-dragging {
    cursor: default;
}

.photo-crop-stage img {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    transform-origin: center;
    user-select: none;
    touch-action: none;
    transition: filter .12s ease, object-position .12s ease, transform .12s ease;
}

.photo-crop-frame {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 2;
    border: 2px dashed rgba(17, 126, 89, .92);
    border-radius: 8px;
    box-shadow: 0 0 0 999px rgba(8, 29, 23, .18);
    cursor: move;
    pointer-events: auto;
    touch-action: none;
}

.photo-crop-stage.is-dragging .photo-crop-frame {
    cursor: grabbing;
}

.photo-crop-frame [data-crop-resize] {
    position: absolute;
    z-index: 3;
    display: block;
    width: 18px;
    height: 18px;
    border: 2px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    box-shadow: 0 3px 10px rgba(8, 29, 23, .2);
}

.photo-crop-frame [data-crop-resize="n"],
.photo-crop-frame [data-crop-resize="s"] {
    left: 50%;
    transform: translateX(-50%);
    cursor: ns-resize;
}

.photo-crop-frame [data-crop-resize="n"] { top: -10px; }
.photo-crop-frame [data-crop-resize="s"] { bottom: -10px; }

.photo-crop-frame [data-crop-resize="e"],
.photo-crop-frame [data-crop-resize="w"] {
    top: 50%;
    transform: translateY(-50%);
    cursor: ew-resize;
}

.photo-crop-frame [data-crop-resize="e"] { right: -10px; }
.photo-crop-frame [data-crop-resize="w"] { left: -10px; }

.photo-crop-frame [data-crop-resize="nw"] { top: -10px; left: -10px; cursor: nwse-resize; }
.photo-crop-frame [data-crop-resize="ne"] { top: -10px; right: -10px; cursor: nesw-resize; }
.photo-crop-frame [data-crop-resize="se"] { right: -10px; bottom: -10px; cursor: nwse-resize; }
.photo-crop-frame [data-crop-resize="sw"] { bottom: -10px; left: -10px; cursor: nesw-resize; }

.photo-crop-stage.photo-fit-square {
    aspect-ratio: 1;
}

.photo-crop-stage.photo-fit-original,
.photo-crop-stage.photo-fit-contain {
    aspect-ratio: 4 / 3;
}

.photo-crop-stage.photo-fit-wide {
    aspect-ratio: 16 / 9;
}

.photo-crop-stage.photo-fit-portrait {
    aspect-ratio: 3 / 4;
    min-height: 520px;
}

.photo-crop-stage.photo-fit-classic {
    aspect-ratio: 3 / 2;
}

.photo-crop-stage.photo-fit-classic_portrait {
    aspect-ratio: 2 / 3;
    min-height: 500px;
}

.photo-crop-stage.photo-fit-tall {
    aspect-ratio: 9 / 16;
    min-height: 560px;
}

.photo-crop-stage.photo-fit-custom {
    aspect-ratio: 4 / 3;
}

.photo-ratio-buttons {
    display: flex;
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: thin;
}

.photo-ratio-buttons .is-active {
    border-color: rgba(17, 126, 89, .45);
    background: #e7f6ee;
    color: var(--accent);
}

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

.photo-compact-adjust {
    display: grid;
    grid-template-columns: minmax(72px, 1fr) auto minmax(34px, auto) auto;
    align-items: center;
    gap: 6px;
    padding: 7px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.photo-compact-adjust span {
    color: var(--muted);
    font-size: .9rem;
    font-weight: 900;
}

.photo-compact-adjust output {
    min-width: 34px;
    text-align: center;
    font-weight: 900;
}

.photo-rotation-menu {
    position: relative;
    display: inline-flex;
    justify-self: start;
}

.photo-rotation-options {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 20;
    display: grid;
    width: min(260px, 80vw);
    gap: 4px;
    padding: 6px;
    border: 1px solid #f18a30;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 18px 42px rgba(8, 29, 23, .16);
}

.photo-rotation-options[hidden] {
    display: none;
}

.photo-rotation-options button {
    min-height: 40px;
    border: 1px solid #f18a30;
    border-radius: 6px;
    background: #fff;
    color: #b45700;
    font-weight: 800;
}

.photo-rotation-options button:hover,
.photo-rotation-options button.is-active {
    background: #fff4e8;
}

.photo-modal-fields {
    display: grid;
    align-content: start;
    gap: 12px;
    min-width: 0;
}

.photo-size-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.photo-size-grid label:last-child {
    grid-column: 1 / -1;
}

.input-unit {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 8px;
}

.input-unit small {
    color: var(--accent-strong);
    font-weight: 800;
}

.photo-slider-row {
    display: grid;
    grid-template-columns: minmax(84px, auto) 1fr minmax(36px, auto);
    gap: 10px;
    align-items: center;
    padding: 9px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.photo-slider-row span,
.photo-slider-row output {
    color: var(--muted);
    font-weight: 900;
}

.check-line {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.check-line input {
    flex: 0 0 auto;
    width: auto;
    min-height: auto;
    margin-top: 3px;
}

.check-line-card {
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
}

.check-copy {
    display: grid;
    gap: 3px;
}

.check-copy small {
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
}

.trip-qr-placeholder {
    display: grid;
    place-items: center;
    width: 150px;
    height: 150px;
    border: 8px solid #fff;
    border-radius: 8px;
    background:
        linear-gradient(90deg, var(--text) 12px, transparent 12px) 0 0 / 30px 30px,
        linear-gradient(var(--text) 12px, transparent 12px) 0 0 / 30px 30px,
        #fff;
    color: var(--accent);
    font-weight: 900;
    box-shadow: var(--shadow-soft);
}

.trip-qr-image {
    display: inline-grid;
    place-items: center;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.trip-qr-image img {
    display: block;
    width: min(260px, 100%);
    height: auto;
}

.share-choice-menu {
    position: relative;
}

.share-choice-menu summary {
    list-style: none;
    cursor: pointer;
}

.share-choice-menu summary::-webkit-details-marker {
    display: none;
}

.share-choice-panel {
    position: absolute;
    right: 0;
    z-index: 40;
    display: grid;
    gap: 12px;
    width: min(760px, calc(100vw - 32px));
    margin-top: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow-strong);
}

.share-choice-card {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
}

.share-choice-card .trip-share-code {
    display: block;
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
}

.share-choice-card .actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.share-choice-card .trip-qr-image img {
    width: 180px;
}

.compact-share-panel {
    width: min(320px, calc(100vw - 32px));
}

.journal-detail-head .share-choice-menu {
    position: static;
}

.journal-detail-head .share-choice-menu[open] {
    flex: 1 0 100%;
}

.journal-detail-head .share-choice-menu[open] summary {
    width: max-content;
    margin-bottom: 10px;
}

.journal-detail-head .share-choice-panel {
    position: static;
    width: 100%;
    max-width: none;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    margin-top: 0;
}

.journal-detail-head .compact-share-panel {
    max-width: 420px;
    grid-template-columns: 1fr;
}

.point-detail-screen {
    display: grid;
    gap: 18px;
}

.point-hero-card {
    --hero-accent: var(--accent);
    --hero-accent-soft: rgba(22, 118, 88, .12);
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(340px, 42%);
    gap: 18px;
    padding: 18px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-top: 5px solid var(--hero-accent);
    border-radius: 10px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(255, 255, 255, .9)),
        linear-gradient(120deg, var(--hero-accent-soft), rgba(39, 111, 191, .08));
    box-shadow: 0 24px 58px rgba(18, 37, 31, .13);
}

.point-hero-card.tone-blue {
    --hero-accent: var(--blue);
    --hero-accent-soft: rgba(39, 111, 191, .13);
}

.point-hero-card.tone-yellow {
    --hero-accent: var(--yellow);
    --hero-accent-soft: rgba(239, 177, 74, .18);
}

.point-hero-card.tone-red {
    --hero-accent: var(--red);
    --hero-accent-soft: rgba(211, 75, 68, .13);
}

.point-hero-card.tone-purple {
    --hero-accent: var(--purple);
    --hero-accent-soft: rgba(122, 91, 199, .13);
}

.point-hero-card.tone-orange {
    --hero-accent: var(--orange);
    --hero-accent-soft: rgba(226, 121, 61, .14);
}

.restriction-alert-box {
    display: grid;
    gap: 12px;
    padding: 18px;
    border: 1px solid rgba(211, 75, 68, .32);
    border-radius: var(--radius);
    background: rgba(211, 75, 68, .08);
}

.restriction-alert-box h2 {
    margin: 0;
}

.restriction-alert-box article {
    display: grid;
    gap: 8px;
    padding: 12px;
    border-radius: 8px;
    background: rgba(255, 255, 255, .82);
}

.point-hero-copy {
    display: grid;
    align-content: start;
    gap: 14px;
}

.point-title-line {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 14px;
    align-items: center;
}

.point-title-line h2 {
    margin: 2px 0 2px;
    font-size: clamp(25px, 3vw, 38px);
}

.point-title-line p {
    margin: 0;
    color: var(--muted);
    font-weight: 800;
}

.point-hero-icon {
    display: grid;
    place-items: center;
    width: 64px;
    height: 64px;
    border: 3px solid #fff;
    border-radius: 18px;
    background: var(--hero-accent);
    color: #fff;
    font-weight: 900;
    box-shadow: 0 16px 34px rgba(18, 37, 31, .18);
}

.point-hero-icon.marker-with-image {
    background: #fff;
}

.point-hero-icon img {
    width: 46px;
    height: 46px;
    object-fit: contain;
}

.point-description {
    max-width: 75ch;
    margin: 0;
    color: #213a33;
    font-size: 18px;
    font-weight: 650;
    line-height: 1.55;
}

.point-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.point-summary-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.point-summary-strip span {
    display: inline-grid;
    gap: 2px;
    min-width: 104px;
    padding: 10px 12px;
    border: 1px solid rgba(18, 37, 31, .11);
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 10px 24px rgba(18, 37, 31, .07);
    font-weight: 900;
}

.trip-nearby-list {
    gap: 1rem;
}

.trip-nearby-card .trip-point-main {
    align-items: flex-start;
}

.trip-nearby-page {
    max-width: 1540px;
}

.trip-nearby-hero {
    padding: clamp(18px, 3vw, 30px);
    border: 1px solid rgba(22, 118, 88, .24);
    border-top: 6px solid var(--blue);
    border-radius: 8px;
    background:
        radial-gradient(circle at 82% 18%, rgba(39, 111, 191, .18), transparent 30%),
        linear-gradient(110deg, rgba(255, 255, 255, .96), rgba(237, 247, 242, .88)),
        linear-gradient(90deg, rgba(22, 118, 88, .055) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.trip-nearby-hero h1 {
    max-width: 760px;
    font-size: clamp(36px, 5.6vw, 66px);
    line-height: .98;
}

.trip-nearby-hero p {
    max-width: 780px;
    color: var(--muted);
    font-size: 19px;
    line-height: 1.45;
}

.trip-nearby-page .trip-route-map {
    min-height: clamp(560px, 66vh, 820px);
    height: auto;
    aspect-ratio: 16 / 11;
    margin-bottom: 0;
}

.trip-nearby-filter-bar {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(220px, 360px) minmax(190px, 260px) auto;
    align-items: end;
    gap: 10px;
    margin: 0 0 22px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .82);
    box-shadow: var(--shadow-soft);
}

.trip-nearby-stats {
    position: relative;
    z-index: 1;
    margin-top: 0;
    margin-bottom: 18px;
}

.trip-nearby-filter-field {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.trip-nearby-filter-field label {
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
    text-transform: uppercase;
}

.trip-nearby-filter-bar select {
    width: 100%;
    min-width: 0;
    min-height: 46px;
}

.trip-nearby-filter-bar select[data-trip-nearby-planned-select] {
    min-width: 0;
}

.trip-nearby-clear-button {
    min-height: 46px;
    align-self: end;
}

.trip-nearby-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
    gap: 16px;
    align-items: stretch;
    margin-bottom: 24px;
}

.trip-nearby-map.is-real-world-map .roadcache-pin-visual {
    width: 28px;
    height: 28px;
}

.trip-nearby-leaflet-pin:not(.marker-with-image) .roadcache-pin-visual {
    background: var(--yellow);
    color: var(--text);
}

.trip-nearby-card.is-selected {
    border-color: var(--accent-strong);
    box-shadow: 0 0 0 3px rgba(19, 124, 89, .16), var(--shadow-soft);
}

.trip-nearby-card.is-added {
    border-left-color: var(--accent);
    opacity: .78;
}

.trip-nearby-card.is-added .trip-point-actions {
    opacity: .7;
}

.trip-nearby-submit-status {
    margin-top: .75rem;
    padding: .75rem 1rem;
    font-weight: 900;
}

.trip-nearby-popup {
    display: grid;
    gap: 8px;
    min-width: 220px;
}

.trip-nearby-popup strong {
    font-size: 16px;
}

.trip-nearby-popup small {
    color: var(--muted);
    font-weight: 700;
}

.trip-nearby-popup form {
    display: grid;
    margin: 0;
}

.trip-nearby-preview {
    display: grid;
    align-content: start;
    gap: 12px;
    margin: 0;
    border-top: 5px solid var(--accent);
    background: rgba(255, 255, 255, .94);
}

.trip-nearby-preview-head {
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr);
    gap: 12px;
    align-items: center;
}

.trip-nearby-preview-head h2 {
    margin: 0;
    font-size: 24px;
}

.trip-nearby-preview-icon {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    border-radius: 12px;
    background: var(--soft);
    color: var(--accent-strong);
    font-weight: 900;
    object-fit: contain;
    padding: .35rem;
}

.trip-radius-pill {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    padding: 12px 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #eef7f3;
    color: var(--accent-strong);
    font-weight: 900;
    white-space: nowrap;
}

@media (max-width: 1020px) {
    .trip-nearby-map-layout {
        grid-template-columns: 1fr;
    }

    .trip-nearby-filter-bar {
        grid-template-columns: 1fr;
    }

    .trip-nearby-page .trip-route-map {
        min-height: 320px;
        aspect-ratio: 1 / 1;
    }
}

.trip-nearby-icon {
    width: 58px;
    height: 58px;
    object-fit: contain;
    border-radius: 12px;
    background: var(--soft);
    padding: .35rem;
    flex-shrink: 0;
}

.point-summary-strip strong {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0;
    text-transform: uppercase;
}

.point-hero-services .service-index-read {
    border-color: rgba(18, 37, 31, .12);
    background: rgba(255, 255, 255, .78);
}

.point-hero-services .service-icon-strip {
    gap: 8px;
    max-height: none;
}

.point-visual-panel {
    position: relative;
    min-height: 340px;
    overflow: hidden;
    border: 1px solid rgba(18, 37, 31, .14);
    border-radius: 10px;
    background: #d8ebe5;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .65), 0 14px 36px rgba(18, 37, 31, .11);
}

.point-detail-map {
    position: relative;
    min-height: 340px;
    height: 100%;
}

.point-cover-image {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 340px;
    object-fit: cover;
}

.point-visual-empty {
    display: grid;
    place-content: center;
    gap: 8px;
    min-height: 340px;
    padding: 24px;
    color: var(--muted);
    text-align: center;
}

.point-visual-empty strong {
    color: var(--text);
    font-size: 22px;
}

.point-admin-box {
    display: grid;
    grid-template-columns: minmax(240px, .8fr) minmax(0, 1.2fr);
    gap: 16px;
    padding: 16px;
    border: 1px solid rgba(39, 111, 191, .28);
    border-left: 5px solid var(--blue);
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(39, 111, 191, .1), rgba(255, 255, 255, .92));
    box-shadow: var(--shadow-soft);
}

.point-admin-box h2,
.point-detail-card h2 {
    margin: 0;
    font-size: 22px;
}

.point-admin-box p {
    margin: 6px 0 0;
    color: var(--muted);
    font-weight: 700;
}

.point-moderation-form {
    display: grid;
    gap: 10px;
}

.point-moderation-form label {
    display: grid;
    gap: 6px;
    color: var(--muted);
    font-weight: 900;
}

.point-moderation-form textarea {
    width: 100%;
}

.point-moderation-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.point-admin-source {
    grid-column: 1 / -1;
    padding: 12px;
    border: 1px solid rgba(39, 111, 191, .2);
    border-radius: 8px;
    background: rgba(255, 255, 255, .72);
}

.point-admin-source summary {
    cursor: pointer;
    font-weight: 900;
}

.point-admin-source pre {
    max-height: 280px;
    overflow: auto;
    padding: 12px;
    border-radius: 8px;
    background: #12251f;
    color: #e4f1eb;
    font-size: 12px;
}

.code-block {
    max-height: 24rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    padding: 12px;
    border-radius: 8px;
    background: #12251f;
    color: #e4f1eb;
    font-size: 12px;
}

.sync-row-error {
    border-color: #d4463f;
    box-shadow: 0 0 0 1px rgba(212, 70, 63, .18);
}

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

.point-detail-card {
    display: grid;
    align-content: start;
    gap: 12px;
    padding: 16px;
    border: 1px solid rgba(18, 37, 31, .12);
    border-radius: 10px;
    background: rgba(255, 255, 255, .96);
    box-shadow: var(--shadow-soft);
}

.point-detail-card.compact {
    margin-top: 10px;
    box-shadow: none;
}

.point-detail-list {
    display: grid;
    gap: 8px;
    margin: 0;
}

.point-detail-list div {
    display: grid;
    grid-template-columns: minmax(120px, .38fr) minmax(0, 1fr);
    gap: 10px;
    align-items: start;
    padding: 9px 0;
    border-top: 1px solid rgba(18, 37, 31, .09);
}

.point-detail-list div:first-child {
    border-top: 0;
}

.point-detail-list dt {
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.point-detail-list dd {
    margin: 0;
    font-weight: 850;
    overflow-wrap: anywhere;
}

.point-detail-list a {
    color: var(--blue);
    text-decoration-thickness: 2px;
}

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

.photo-grid .photo-tile {
    min-height: 180px;
}

.notice {
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #edf6f2;
    font-weight: 700;
}

.notice.error {
    background: #f7e2df;
    color: var(--danger);
}

.notice.warning {
    background: #fff3db;
    color: #7b4d09;
}

.moderation-duplicate-box {
    display: grid;
    gap: 8px;
}

.moderation-duplicate-list {
    display: grid;
    gap: 6px;
}

.moderation-duplicate-list p,
.moderation-duplicate-box .field-hint {
    margin: 0;
}

.moderation-duplicate-list span {
    display: inline-block;
    margin-left: 4px;
    font-weight: 600;
}

.moderation-quick-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.moderation-quick-filters .button.is-active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
}

.moderation-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 12px;
    margin: 14px 0;
}

.moderation-page .detail-layout {
    align-items: start;
    margin-top: 20px;
}

.moderation-page .detail-layout.moderation-single-column {
    grid-template-columns: minmax(0, 1fr);
}

.moderation-stat-strip,
.moderation-category-strip {
    position: relative;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 12px;
}

.moderation-stat-strip {
    align-items: stretch;
}

.moderation-category-strip {
    max-height: 150px;
    overflow: auto;
    padding: 2px;
}

.moderation-stat-strip a,
.moderation-stat-strip > span,
.moderation-category-strip a {
    display: grid;
    align-content: center;
    min-width: 0;
    min-height: 58px;
    padding: 10px 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
    color: inherit;
    text-decoration: none;
}

.moderation-stat-strip a,
.moderation-stat-strip > span {
    flex: 1 1 120px;
    max-width: 170px;
}

.moderation-page-stat-strip > span {
    flex-basis: 190px;
    max-width: 240px;
}

.moderation-category-strip a {
    flex: 1 1 180px;
}

.moderation-stat-strip strong,
.moderation-category-strip strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--ink);
    font-size: clamp(18px, 2vw, 24px);
    line-height: 1.05;
}

.moderation-category-strip strong {
    font-size: 16px;
}

.moderation-stat-strip a span,
.moderation-stat-strip > span small,
.moderation-category-strip span {
    display: -webkit-box;
    margin-top: 4px;
    overflow: hidden;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.2;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.moderation-stat-strip a:hover,
.moderation-stat-strip a:focus-visible,
.moderation-stat-strip a.is-active,
.moderation-category-strip a:hover,
.moderation-category-strip a:focus-visible,
.moderation-category-strip a.is-active {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px rgba(22, 118, 88, .12), var(--shadow-soft);
}

.moderation-dashboard-grid h3 {
    margin-bottom: 6px;
}

.moderation-summary-strip .stat-card,
.moderation-dashboard-grid .stat-card {
    min-height: auto;
    padding: 12px 14px;
}

.moderation-summary-strip .stat-card strong,
.moderation-dashboard-grid .stat-card strong {
    font-size: clamp(18px, 2vw, 24px);
}

.moderation-action-feedback {
    margin: 12px 0;
}

.moderation-merge-status {
    display: grid;
    gap: 4px;
    margin: 10px 0;
}

.moderation-merge-status strong {
    font-size: 18px;
}

.moderation-merge-status span {
    color: var(--muted);
    font-weight: 800;
}

[data-moderation-point-id].is-merged-away {
    opacity: 0;
    transform: translateX(12px);
    transition: opacity .18s ease, transform .18s ease;
}

.compact-table-wrap {
    max-height: 210px;
    overflow: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.compact-table-wrap table {
    margin: 0;
}

.compact-table-wrap small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-size: 12px;
}

.moderation-bucket-list {
    display: grid;
    gap: 7px;
    max-height: 210px;
    overflow: auto;
}

.moderation-bucket-list a,
.moderation-bucket-list > span {
    display: grid;
    grid-template-columns: 54px 1fr;
    gap: 8px;
    align-items: center;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: inherit;
    text-decoration: none;
}

.moderation-bucket-list a:hover,
.moderation-bucket-list a:focus-visible {
    border-color: var(--accent);
    background: #edf6f2;
}

.moderation-bucket-list strong {
    color: var(--accent-strong);
}

.moderation-risk-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 12px 0;
}

.moderation-risk-controls span {
    color: var(--muted);
    font-weight: 900;
}

.moderation-risk-controls .button.is-active {
    background: var(--text);
    border-color: var(--text);
    color: #fff;
}

.moderation-risk-empty {
    margin: 10px 0;
}

.moderation-risk-panel {
    display: grid;
    gap: 8px;
    margin: 10px 0;
    padding: 12px;
    border: 1px solid var(--line);
    border-left: 5px solid var(--accent);
    border-radius: 8px;
    background: #f4fbf8;
}

.moderation-risk-panel strong {
    font-size: .98rem;
}

.moderation-risk-advice {
    margin: 0;
    color: var(--muted);
    font-weight: 800;
}

.moderation-risk-panel.risk-medium {
    border-left-color: var(--yellow);
    background: #fff7e8;
}

.moderation-risk-panel.risk-high {
    border-left-color: var(--danger);
    background: #fff0ed;
}

.moderation-risk-panel.risk-medium strong {
    color: #7b4d09;
}

.moderation-risk-panel.risk-high strong {
    color: var(--danger);
}

.error-text {
    color: var(--danger);
}

.notice.ok {
    color: var(--accent);
}

.admin-service-audit-card .service-index-read {
    margin: 12px 0;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f7fbf9;
}

.admin-service-audit-card .admin-table form {
    display: grid;
    gap: 8px;
    margin: 0;
}

.admin-service-audit-card tr.is-archived-inline {
    opacity: .64;
    background: #eef6f2;
}

.admin-service-audit-card tr.is-archived-inline td:first-child strong::after {
    content: " archive";
    display: inline-flex;
    margin-left: 8px;
    padding: 3px 7px;
    border-radius: 999px;
    background: #dfeee7;
    color: var(--accent-strong);
    font-size: 12px;
    font-weight: 950;
}

.service-audit-card-check,
.service-audit-select-all {
    width: fit-content;
    margin: 0 0 8px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    color: var(--accent-strong);
    font-weight: 900;
}

.service-audit-card-check input,
.service-audit-select-all input {
    margin-right: 6px;
}

.tag-check {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 10px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--soft);
    color: var(--text);
    font-weight: 900;
}

.tag-check input {
    margin: 0;
}

.side-panel {
    position: sticky;
    top: 86px;
    display: grid;
    gap: 10px;
    padding: 16px;
    background: rgba(255, 255, 255, .94);
    align-self: start;
    align-content: start;
    grid-auto-rows: max-content;
}

.mini-map {
    min-height: 190px;
}

.mini-map .pin {
    position: absolute;
}

.mini-map .p1 {
    left: 24%;
    top: 26%;
}

.mini-map .p2 {
    left: 60%;
    top: 42%;
    background: var(--blue);
}

.mini-map .p3 {
    left: 42%;
    top: 66%;
    background: var(--yellow);
    color: var(--text);
}

.mini-map.detail .center,
.pin.center {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.share-box {
    display: grid;
    gap: 7px;
    padding-top: 8px;
    border-top: 1px solid var(--line);
}

.qr {
    display: grid;
    grid-template-columns: repeat(7, 11px);
    gap: 3px;
    width: max-content;
    padding: 8px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.qr span {
    width: 11px;
    height: 11px;
    background: #edf3eb;
}

.qr span.on {
    background: var(--text);
}

.review {
    padding: 14px;
    margin-bottom: 10px;
}

.journal-map {
    min-height: 240px;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 28px;
    margin-bottom: 18px;
}

.journal-map a {
    display: grid;
    gap: 8px;
    text-decoration: none;
    font-weight: 800;
}

.journal-map span {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 999px;
    border: 4px solid #fff;
    background: var(--blue);
    color: #fff;
}

.journal-map.is-real-world-map {
    display: block;
    padding: 0;
}

.trip-detail-page .trip-route-map {
    min-height: clamp(560px, 62vh, 780px);
}

.journal-map.is-real-world-map .leaflet-control-attribution {
    font-size: 10px;
    line-height: 1.15;
}

.journal-map.is-real-world-map .leaflet-control-attribution a {
    display: inline;
    gap: 0;
    font-weight: 700;
}

.journal-map.is-real-world-map .leaflet-control-attribution span {
    display: inline;
    width: auto;
    height: auto;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: inherit;
}

.trip-route-map.is-real-world-map .roadcache-pin-visual {
    width: 24px;
    height: 24px;
    border: 3px solid #fff;
    background: var(--accent-strong);
    box-shadow: 0 0 0 2px rgba(18, 37, 31, .32), 0 6px 14px rgba(18, 37, 31, .28);
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-stage .roadcache-pin-visual {
    background: var(--accent-strong);
    box-shadow: 0 0 0 2px rgba(22, 118, 88, .42), 0 6px 14px rgba(18, 37, 31, .28);
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-idea .roadcache-pin-visual {
    width: 30px;
    height: 30px;
    border: 3px solid #fff;
    background: #e29b18;
    color: var(--text);
    box-shadow: 0 0 0 3px rgba(226, 155, 24, .34), 0 8px 18px rgba(18, 37, 31, .28);
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-idea .marker-symbol {
    color: var(--text);
    font-size: 12px;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-stage.tone-red .roadcache-pin-visual,
.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-idea.tone-red .roadcache-pin-visual {
    background: var(--danger);
    color: #fff;
    box-shadow: 0 0 0 3px rgba(205, 71, 67, .36), 0 8px 18px rgba(18, 37, 31, .28);
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-idea.tone-red .marker-symbol {
    color: #fff;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.is-page-visible {
    z-index: 960 !important;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.is-page-visible .roadcache-pin-visual {
    width: 34px;
    height: 34px;
    border-width: 4px;
    box-shadow: 0 0 0 4px rgba(22, 118, 88, .26), 0 12px 26px rgba(18, 37, 31, .34);
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-trip-idea.is-page-visible .roadcache-pin-visual {
    width: 38px;
    height: 38px;
    box-shadow: 0 0 0 4px rgba(226, 155, 24, .32), 0 12px 26px rgba(18, 37, 31, .34);
}

.trip-route-map.is-real-world-map .roadcache-pin-visual .marker-symbol {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    overflow: hidden;
    border-radius: 999px;
    background: transparent;
    color: #fff;
    font-size: 11px;
    font-weight: 900;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-with-image .roadcache-pin-visual {
    width: 34px;
    height: 34px;
    border-width: 3px;
    background: #fff !important;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-with-image .marker-symbol {
    width: 30px !important;
    height: 30px !important;
    max-width: 30px !important;
    max-height: 30px !important;
}

.trip-route-map.is-real-world-map .roadcache-leaflet-pin.marker-with-image .marker-image {
    width: 28px !important;
    height: 28px !important;
    max-width: 28px !important;
    max-height: 28px !important;
    object-fit: contain !important;
}

.hunt-detail-page .page-head {
    margin-bottom: 24px;
}

.hunt-form-page {
    --hunt-blue: #2f75bd;
    --hunt-gold: #dd9715;
    --hunt-soft-green: #edf7f2;
    --hunt-soft-blue: #edf6fb;
    --hunt-soft-gold: #fff6e2;
}

.hunt-form-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(320px, .8fr) auto;
    gap: clamp(18px, 4vw, 34px);
    align-items: center;
    margin-bottom: 22px;
    padding: clamp(24px, 5vw, 44px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-top: 5px solid var(--accent);
    border-radius: 8px;
    background:
        linear-gradient(105deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .92) 47%, rgba(226, 243, 237, .72) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png") right center / 50% auto no-repeat,
        #f8fbfa;
    box-shadow: var(--shadow-soft);
}

.hunt-form-hero::after {
    position: absolute;
    left: 24%;
    bottom: -135px;
    width: min(48vw, 680px);
    height: 280px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-12deg);
    content: "";
    pointer-events: none;
}

.hunt-form-hero-copy,
.hunt-form-map-preview,
.hunt-form-hero .page-actions {
    position: relative;
    z-index: 1;
}

.hunt-form-hero h1 {
    max-width: 720px;
    font-size: clamp(48px, 7vw, 84px);
    line-height: .92;
}

.hunt-form-hero p {
    max-width: 690px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.hunt-creation-steps {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
}

.hunt-creation-steps span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 7px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 999px;
    background: rgba(255, 255, 255, .86);
    color: var(--text);
    font-weight: 850;
}

.hunt-creation-steps strong {
    display: inline-grid;
    width: 26px;
    height: 26px;
    place-items: center;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 14px;
}

.hunt-form-map-preview {
    min-height: 300px;
    border: 1px solid rgba(22, 118, 88, .22);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .08) 1px, transparent 1px),
        radial-gradient(circle at 25% 28%, rgba(22, 118, 88, .17), transparent 28%),
        radial-gradient(circle at 84% 72%, rgba(47, 117, 189, .17), transparent 26%),
        rgba(232, 246, 241, .72);
    background-size: 42px 42px, 42px 42px, auto, auto, auto;
}

.hunt-form-route {
    position: absolute;
    left: 15%;
    top: 60%;
    width: 74%;
    height: 5px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--accent), var(--hunt-blue), var(--hunt-gold));
    transform: rotate(-18deg);
    box-shadow: 0 8px 22px rgba(18, 37, 31, .16);
}

.hunt-form-pin {
    position: absolute;
    z-index: 2;
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    border: 4px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-weight: 950;
    box-shadow: 0 12px 28px rgba(18, 37, 31, .2);
}

.hunt-form-pin.pin-start {
    left: 13%;
    top: 61%;
    background: var(--accent);
}

.hunt-form-pin.pin-one {
    left: 32%;
    top: 48%;
    background: var(--hunt-blue);
}

.hunt-form-pin.pin-two {
    right: 27%;
    top: 36%;
    background: var(--accent);
}

.hunt-form-pin.pin-three {
    right: 8%;
    top: 26%;
    background: var(--hunt-gold);
}

.hunt-form-preview-card {
    position: absolute;
    right: 22px;
    bottom: 22px;
    display: grid;
    gap: 4px;
    min-width: min(280px, calc(100% - 44px));
    padding: 16px;
    border: 1px solid rgba(188, 209, 202, .85);
    border-radius: 8px;
    background: rgba(255, 255, 255, .9);
    box-shadow: var(--shadow-soft);
}

.hunt-form-preview-card strong {
    font-size: 22px;
}

.hunt-form-preview-card span {
    color: var(--muted);
    font-weight: 750;
}

.hunt-form-hero .page-actions {
    align-self: start;
}

.hunt-creation-form {
    display: grid;
    gap: 16px;
}

.hunt-form-section {
    position: relative;
    overflow: hidden;
    border-top: 4px solid var(--accent);
    background: linear-gradient(135deg, #fff 0%, #f7fbf9 100%);
}

.hunt-form-section::after {
    position: absolute;
    right: -80px;
    top: -90px;
    width: 210px;
    height: 210px;
    border-radius: 50%;
    background: rgba(22, 118, 88, .07);
    content: "";
    pointer-events: none;
}

.hunt-form-section-map {
    border-top-color: var(--hunt-blue);
    background: linear-gradient(135deg, #fff 0%, var(--hunt-soft-blue) 100%);
}

.hunt-form-section-map::after {
    background: rgba(47, 117, 189, .08);
}

.hunt-form-section-reward {
    border-top-color: var(--hunt-gold);
    background: linear-gradient(135deg, #fff 0%, var(--hunt-soft-gold) 100%);
}

.hunt-form-section-reward::after {
    background: rgba(221, 151, 21, .1);
}

.section-kicker {
    display: inline-flex;
    min-height: 28px;
    align-items: center;
    margin-bottom: 8px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--green);
    font-size: 13px;
    font-weight: 950;
    text-transform: uppercase;
}

.hunt-help-page {
    --hunt-blue: #2f75bd;
    --hunt-gold: #dd9715;
}

.hunt-help-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(320px, .78fr) auto;
    gap: clamp(18px, 4vw, 32px);
    align-items: center;
    margin-bottom: 22px;
    padding: clamp(24px, 5vw, 44px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-top: 5px solid var(--accent);
    border-radius: 8px;
    background:
        linear-gradient(105deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .92) 50%, rgba(224, 242, 238, .72) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png") right center / 50% auto no-repeat,
        #f8fbfa;
    box-shadow: var(--shadow-soft);
}

.hunt-help-hero::after {
    position: absolute;
    left: 25%;
    bottom: -130px;
    width: min(44vw, 620px);
    height: 250px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-10deg);
    content: "";
    pointer-events: none;
}

.hunt-help-hero > * {
    position: relative;
    z-index: 1;
}

.hunt-help-hero h1 {
    max-width: 760px;
    font-size: clamp(46px, 7vw, 82px);
    line-height: .92;
}

.hunt-help-hero p {
    max-width: 680px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.hunt-help-flow {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
}

.hunt-help-flow span {
    display: inline-grid;
    gap: 2px;
    min-height: 52px;
    align-content: center;
    padding: 8px 12px;
    border: 1px solid rgba(22, 118, 88, .18);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    color: var(--muted);
    font-weight: 750;
}

.hunt-help-flow strong {
    color: var(--text);
    font-size: 16px;
}

.hunt-help-map {
    position: relative;
    min-height: 280px;
    border: 1px solid rgba(22, 118, 88, .22);
    border-radius: 8px;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .08) 1px, transparent 1px),
        radial-gradient(circle at 24% 32%, rgba(22, 118, 88, .17), transparent 27%),
        radial-gradient(circle at 78% 70%, rgba(47, 117, 189, .18), transparent 25%),
        rgba(232, 246, 241, .74);
    background-size: 42px 42px, 42px 42px, auto, auto, auto;
}

.hunt-help-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(300px, .78fr);
    gap: 16px;
    align-items: start;
    margin-bottom: 18px;
}

.hunt-help-panel {
    padding: clamp(18px, 3vw, 28px);
    border: 1px solid var(--line);
    border-top: 4px solid var(--accent);
    border-radius: 8px;
    background: linear-gradient(135deg, #fff 0%, #f7fbf9 100%);
    box-shadow: var(--shadow-soft);
}

.hunt-help-panel-code {
    border-top-color: var(--hunt-blue);
    background: linear-gradient(135deg, #fff 0%, #edf6fb 100%);
}

.hunt-help-panel h2 {
    margin-top: 0;
}

.hunt-help-checks {
    display: grid;
    gap: 10px;
}

.hunt-help-checks span {
    display: block;
    padding: 12px 14px;
    border: 1px solid rgba(188, 209, 202, .85);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    color: var(--text);
    font-weight: 800;
    line-height: 1.35;
}

.hunt-help-checks span::before {
    display: inline-grid;
    width: 24px;
    height: 24px;
    place-items: center;
    margin-right: 8px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--green);
    font-size: 13px;
    font-weight: 950;
    content: "OK";
}

.hunt-help-rules {
    border-top: 4px solid var(--hunt-gold);
    background: linear-gradient(135deg, #fff 0%, #fff6e2 100%);
}

.hunt-detail-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, max-content);
    gap: clamp(18px, 4vw, 34px);
    align-items: end;
    padding: clamp(24px, 5vw, 42px);
    overflow: hidden;
    border: 1px solid var(--line);
    border-top: 5px solid var(--accent);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .9) 48%, rgba(227, 242, 238, .65) 100%),
        url("https://tile.openstreetmap.org/7/62/46.png") right center / 44% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .05) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .04) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 44% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.hunt-detail-hero::after {
    position: absolute;
    left: 34%;
    bottom: -130px;
    width: min(42vw, 560px);
    height: 250px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-10deg);
    content: "";
    pointer-events: none;
}

.hunt-detail-hero > div {
    position: relative;
    z-index: 1;
}

.hunt-detail-hero h1 {
    max-width: 780px;
    font-size: clamp(42px, 6vw, 76px);
    line-height: .95;
}

.hunt-detail-hero p {
    max-width: 720px;
    margin: 0 0 16px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.hunt-detail-hero .tags.big {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.hunt-detail-hero .tags.big span {
    min-height: 34px;
    padding: 7px 11px;
    border: 1px solid rgba(22, 118, 88, .16);
    background: rgba(255, 255, 255, .8);
    box-shadow: none;
}

.hunt-detail-hero .page-actions {
    justify-content: flex-end;
    max-width: 520px;
    padding: 14px;
    border: 1px solid rgba(188, 209, 202, .78);
    border-radius: 8px;
    background: rgba(255, 255, 255, .86);
    box-shadow: var(--shadow-soft);
}

.hunt-detail-page .page-actions {
    align-items: stretch;
}

.hunt-detail-page .page-actions form {
    display: inline-flex;
    margin: 0;
}

.hunt-map,
.hunt-map.is-real-world-map {
    min-height: 520px;
    height: min(66vh, 680px);
    margin: 16px 0 26px;
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--shadow-soft);
}

.hunt-map.is-real-world-map .roadcache-pin-visual {
    width: 30px;
    height: 30px;
    border: 3px solid #fff;
    background: var(--accent);
    box-shadow: 0 0 0 2px rgba(18, 37, 31, .24), 0 8px 18px rgba(18, 37, 31, .28);
}

.hunt-map.is-real-world-map .marker-symbol {
    width: 100% !important;
    height: 100% !important;
    color: #fff;
    font-size: 12px;
    font-weight: 900;
}

.hunt-map-actions {
    margin: -8px 0 26px;
    padding: 16px;
}

.hunt-start-card {
    border-top: 4px solid var(--hunt-gold, #dd9715);
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98) 0%, rgba(255, 249, 235, .82) 100%),
        linear-gradient(90deg, rgba(221, 151, 21, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(22, 118, 88, .06) 1px, transparent 1px);
    background-size: auto, 46px 46px, 46px 46px;
}

.hunt-map-actions > div {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: space-between;
    gap: 10px;
}

.hunt-map-actions h2 {
    margin: 0;
    font-size: clamp(24px, 3vw, 34px);
}

.hunt-map-actions p {
    margin: 4px 0 0;
    color: var(--muted);
}

.hunt-builder-flow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin: 12px 0 8px;
}

.hunt-builder-flow span {
    min-height: 70px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .85);
    border-radius: 8px;
    background: #fff;
    color: var(--muted);
    font-weight: 750;
}

.hunt-builder-flow strong {
    display: block;
    margin-bottom: 4px;
    color: var(--text);
    font-size: 18px;
}

.hunt-builder-flow span:nth-child(1) {
    border-top: 4px solid var(--accent);
}

.hunt-builder-flow span:nth-child(2) {
    border-top: 4px solid var(--hunt-gold, #dd9715);
}

.hunt-builder-flow span:nth-child(3) {
    border-top: 4px solid var(--hunt-blue, #2f75bd);
}

.hunt-map-action-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.compact-hunt-point-form {
    display: grid;
    align-content: start;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.compact-hunt-point-form h3 {
    margin: 0;
    font-size: 20px;
}

.compact-hunt-point-form .form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.compact-hunt-point-form input,
.compact-hunt-point-form select,
.compact-hunt-point-form textarea {
    min-height: 42px;
}

.compact-hunt-point-form textarea {
    resize: vertical;
}

.compact-hunt-point-form button {
    width: 100%;
}

.hunt-location-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 6px;
}

.hunt-location-summary span {
    display: inline-flex;
    min-height: 28px;
    align-items: center;
    padding: 5px 9px;
    border-radius: 999px;
    background: #edf6f2;
    color: var(--text);
    font-weight: 850;
    font-size: 13px;
}

.hunt-detail-page .detail-layout {
    grid-template-columns: minmax(0, 1fr) 280px;
    align-items: start;
}

.hunt-step-list {
    gap: 14px;
}

.hunt-step-card {
    position: relative;
    display: grid;
    gap: 12px;
    overflow: hidden;
    padding: 18px;
    border-color: rgba(188, 209, 202, .9);
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(245, 251, 248, .86)),
        linear-gradient(90deg, rgba(22, 118, 88, .05) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .04) 1px, transparent 1px);
    background-size: auto, 46px 46px, 46px 46px;
}

.hunt-step-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 5px;
    background: var(--hunt-blue, #2f75bd);
}

.hunt-step-card.is-start-step::before {
    background: var(--hunt-gold, #dd9715);
}

.hunt-step-card.is-complete::before {
    background: var(--accent);
}

.hunt-step-card.has-warnings::before {
    background: #df9f22;
}

.hunt-step-card-head {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
}

.hunt-step-order {
    display: grid;
    gap: 8px;
    justify-items: center;
    min-width: 86px;
}

.hunt-step-order > span {
    display: grid;
    width: 52px;
    height: 52px;
    place-items: center;
    border: 3px solid #fff;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    box-shadow: 0 10px 22px rgba(18, 37, 31, .18);
    font-size: 22px;
    font-weight: 950;
}

.hunt-step-card.is-start-step .hunt-step-order > span {
    background: var(--hunt-gold, #dd9715);
}

.hunt-step-title-block {
    min-width: 0;
}

.hunt-step-kicker {
    margin: 0 0 4px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.hunt-step-title-block h3 {
    margin: 0;
    overflow-wrap: anywhere;
    font-size: clamp(24px, 3vw, 34px);
}

.hunt-step-badges,
.hunt-step-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}

.hunt-step-facts span {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 7px 11px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 999px;
    background: rgba(255, 255, 255, .82);
    color: var(--muted);
    font-weight: 850;
}

.hunt-step-facts strong {
    margin-right: 4px;
    color: var(--text);
}

.hunt-step-list article.is-complete {
    border-color: rgba(22, 118, 88, .35);
    background: #f3fbf7;
}

.hunt-step-list article.is-current-step {
    border-color: var(--accent);
    box-shadow: 0 18px 44px rgba(18, 124, 93, .16);
}

.hunt-step-list article.is-dragging {
    opacity: .62;
    outline: 2px dashed var(--accent);
    cursor: grabbing;
}

.hunt-step-list article[draggable="true"] {
    cursor: grab;
}

.step-completion-state {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 8px 0 10px;
    color: var(--muted);
    font-size: 14px;
}

.step-completion-state .status-pill {
    min-height: 26px;
    padding: 5px 9px;
}

.hunt-riddle-stack {
    display: grid;
    gap: 12px;
    margin: 0;
}

.hunt-riddle-stack[hidden],
.hunt-riddle-stack [hidden] {
    display: none !important;
}

.hunt-riddle-stack article {
    display: grid;
    gap: 10px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.hunt-riddle-stack strong {
    display: block;
    margin-bottom: 6px;
}

.hunt-riddle-stack p {
    margin: 0;
}

.hunt-riddle-stack label {
    display: grid;
    gap: 5px;
    font-weight: 850;
}

.hunt-riddle-stack input {
    min-height: 42px;
}

.hunt-riddle-stack.is-admin-preview article {
    background: #fff;
}

.hunt-riddle-stack.is-admin-preview span {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    background: #edf6f2;
    font-weight: 850;
    font-size: 13px;
}

.hunt-test-arrival {
    display: grid;
    gap: 10px;
    margin: 0;
    padding: 14px;
    border: 1px solid #d9b85b;
    border-radius: 8px;
    background: #fff7df;
}

.hunt-test-arrival p {
    margin: 0;
    color: #5b4100;
    font-weight: 850;
}

.hunt-arrival-actions {
    display: flex;
    gap: 10px;
    align-items: stretch;
}

.hunt-arrival-actions button {
    flex: 1 1 0;
    min-width: 0;
    white-space: nowrap;
}

@media (max-width: 560px) {
    .hunt-arrival-actions {
        flex-wrap: wrap;
    }

    .hunt-arrival-actions button {
        flex-basis: 100%;
    }
}

.hunt-offline-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    margin: 14px 0 22px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f4fbf8;
}

.hunt-offline-panel p {
    margin: 4px 0 0;
}

.hunt-offline-panel > .field-hint {
    grid-column: 1 / -1;
    margin: 0;
}

@media (max-width: 720px) {
    .hunt-offline-panel {
        grid-template-columns: 1fr;
    }
}

.hunt-player-form > .field-hint {
    margin: 0;
}

.hunt-gps-validation-panel {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f6fbf8;
}

.hunt-gps-validation-panel p {
    margin: 4px 0 0;
}

.hunt-gps-validation-panel .actions {
    justify-content: flex-start;
}

.hunt-gps-validation-panel input[readonly] {
    background: #eef6f2;
}

.hunt-question-text {
    padding: 12px;
    border-left: 4px solid var(--accent);
    border-radius: 6px;
    background: #fff;
    font-weight: 850;
}

.hunt-player-hint {
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.hunt-player-hint summary {
    cursor: pointer;
    padding: 10px 12px;
    font-weight: 850;
}

.hunt-player-hint p {
    padding: 0 12px 12px;
    color: var(--muted);
}

.hunt-player-hint.warning-hint {
    border-color: #d9b85b;
    background: #fff7df;
}

.hunt-readmore {
    display: grid;
    gap: 6px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.hunt-readmore > strong {
    margin: 0;
}

.hunt-readmore p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    color: var(--muted);
    line-height: 1.45;
}

.hunt-readmore.is-open p {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}

.hunt-readmore [data-read-more-toggle] {
    justify-self: start;
    min-height: 30px;
    padding: 6px 10px;
}

.hunt-proof-field {
    display: grid;
    gap: 6px;
    font-weight: 850;
}

.hunt-question-editor {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
}

.hunt-question-editor h4 {
    margin: 0;
}

.hunt-question-items {
    display: grid;
    gap: 12px;
}

.hunt-question-card {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.hunt-question-card.is-disabled {
    background: #f5f8f7;
    border-style: dashed;
    opacity: .78;
}

.hunt-question-card.is-delete-marked {
    border-color: var(--red);
    background: #fff4f3;
}

.hunt-question-card summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    font-weight: 900;
    list-style: none;
}

.hunt-question-card summary::-webkit-details-marker {
    display: none;
}

.hunt-question-card summary::before {
    content: "+";
    display: inline-grid;
    place-items: center;
    width: 24px;
    height: 24px;
    border-radius: 999px;
    background: #eaf4f0;
    color: var(--accent);
    flex: 0 0 24px;
}

.hunt-question-card[open] summary::before {
    content: "-";
}

.hunt-question-card summary span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}

.hunt-question-card summary small {
    min-width: 160px;
    max-width: 44%;
    overflow: hidden;
    text-align: right;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--muted);
}

.danger-line {
    border-color: rgba(211, 75, 68, .35);
    color: var(--danger);
}

.hunt-question-body {
    display: grid;
    gap: 10px;
    padding-top: 10px;
}

.question-card-actions {
    justify-content: flex-start;
    padding: 8px 0 2px;
}

.hunt-question-gps {
    display: grid;
    gap: 10px;
    padding: 10px;
    border: 1px dashed rgba(22, 118, 88, .32);
    border-radius: 8px;
    background: #f6fbf8;
}

.hunt-question-gps .actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.hunt-question-gps-modal[hidden] {
    display: none;
}

.hunt-question-gps-modal {
    position: fixed;
    inset: 0;
    z-index: 5000;
    display: grid;
    place-items: center;
    padding: 22px;
    background: rgba(18, 37, 31, .58);
    backdrop-filter: blur(4px);
}

.hunt-question-gps-card {
    display: grid;
    gap: 14px;
    width: min(980px, 100%);
    max-height: 92vh;
    overflow: auto;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow);
}

.hunt-question-gps-map {
    position: relative;
    min-height: 520px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #d9ebe4;
}

.edit-panel {
    margin-top: 14px;
    border-top: 1px solid var(--line);
    padding-top: 10px;
}

.edit-panel summary {
    cursor: pointer;
    font-weight: 900;
}

.checklist-lines {
    display: grid;
    gap: 8px;
}

.checklist-lines span {
    display: block;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
    color: var(--text);
    font-weight: 750;
}

.hunt-validation-checklist {
    margin-top: 18px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: linear-gradient(135deg, #ffffff 0%, #f5fbf8 100%);
}

.hunt-validation-checklist h3 {
    margin: 14px 0 8px;
    font-size: 18px;
}

.hunt-validation-summary {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.hunt-validation-summary h2 {
    margin: 0 0 2px;
    font-size: clamp(20px, 2.2vw, 26px);
}

.hunt-validation-summary p {
    margin: 0;
    color: var(--muted);
    font-weight: 700;
    line-height: 1.35;
}

.hunt-validation-summary.is-ready {
    border-color: rgba(22, 124, 89, .28);
    background: #f2fbf6;
}

.hunt-validation-summary.is-blocked {
    border-color: #e8c67a;
    background: #fff9ed;
}

.hunt-validation-score {
    min-width: 64px;
    padding: 9px 10px;
    border-radius: 999px;
    background: var(--green);
    color: #fff;
    text-align: center;
    font-size: 18px;
    font-weight: 950;
}

.hunt-validation-summary.is-blocked .hunt-validation-score {
    background: #d99312;
}

.hunt-priority-box {
    margin-top: 12px;
    padding: 12px;
    border: 1px solid #e8c67a;
    border-radius: 8px;
    background: #fffaf0;
}

.hunt-priority-list {
    display: grid;
    gap: 8px;
    margin: 0;
    padding-left: 22px;
}

.hunt-priority-list li {
    padding-left: 2px;
    font-weight: 850;
}

.hunt-priority-list small {
    display: block;
    margin-top: 2px;
    color: var(--muted);
    font-weight: 650;
    line-height: 1.3;
}

.hunt-checklist-details {
    margin-top: 12px;
    border-top: 1px solid var(--line);
    padding-top: 10px;
}

.hunt-checklist-details summary {
    cursor: pointer;
    font-weight: 900;
}

.status-checklist span,
.manual-checklist label {
    display: grid;
    gap: 4px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface-strong);
    color: var(--text);
    font-weight: 800;
}

.status-checklist.compact {
    margin-top: 10px;
}

.manual-checklist label {
    grid-template-columns: auto 1fr;
    align-items: start;
    padding: 8px 10px;
    font-size: 15px;
    line-height: 1.25;
}

.manual-checklist input {
    margin-top: 3px;
}

.status-checklist small {
    display: block;
    color: var(--muted);
    font-weight: 650;
    line-height: 1.35;
}

.status-checklist strong {
    width: max-content;
    padding: 3px 8px;
    border-radius: 999px;
    background: #eef8f3;
    color: var(--green);
    font-size: 12px;
}

.status-checklist .is-missing strong {
    background: #fff2d7;
    color: #9a5a00;
}

.status-checklist .is-missing,
.manual-checklist .is-missing {
    border-color: #e8c67a;
    background: #fffaf0;
}

.checklist-lines.large {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.small-empty {
    padding: 18px;
    margin-bottom: 16px;
}

.timeline {
    display: grid;
    gap: 12px;
    margin-bottom: 18px;
}

.timeline article {
    padding: 16px;
}

.notifications-page {
    display: grid;
    gap: 22px;
}

.notifications-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, .38fr);
    gap: clamp(16px, 3vw, 28px);
    align-items: center;
    min-height: 300px;
    overflow: hidden;
    padding: clamp(22px, 4vw, 36px);
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .98) 0%, rgba(255, 255, 255, .9) 50%, rgba(255, 255, 255, .62) 100%),
        url("https://tile.openstreetmap.org/7/62/45.png") right center / 48% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .055) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .04) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 48% auto, 56px 56px, 56px 56px, auto;
    box-shadow: var(--shadow-soft);
}

.notifications-hero::after {
    position: absolute;
    right: 20%;
    bottom: -116px;
    width: min(42vw, 560px);
    height: 250px;
    border: 12px solid rgba(22, 118, 88, .1);
    border-right-color: transparent;
    border-bottom-color: transparent;
    border-radius: 50%;
    transform: rotate(-10deg);
    content: "";
    pointer-events: none;
}

.notifications-hero-copy,
.notifications-hero-card {
    position: relative;
    z-index: 1;
}

.notifications-hero h1 {
    max-width: 780px;
    margin-bottom: 14px;
    font-size: clamp(38px, 6vw, 68px);
    line-height: .96;
}

.notifications-hero p {
    max-width: 650px;
    margin: 0 0 18px;
    color: var(--muted);
    font-size: 20px;
    line-height: 1.45;
}

.notifications-hero-card {
    display: grid;
    gap: 12px;
    padding: clamp(16px, 2vw, 22px);
    border: 1px solid rgba(188, 209, 202, .84);
    border-radius: 8px;
    background: rgba(255, 255, 255, .88);
    backdrop-filter: blur(8px);
    box-shadow: var(--shadow-soft);
}

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

.notifications-hero-stats span {
    display: grid;
    gap: 3px;
    min-height: 78px;
    align-content: center;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: rgba(248, 251, 250, .82);
}

.notifications-hero-stats strong {
    color: var(--text);
    font-size: clamp(30px, 4vw, 44px);
    line-height: 1;
}

.notifications-hero-stats small {
    color: var(--muted);
    font-weight: 850;
}

.notifications-layout {
    display: grid;
    grid-template-columns: minmax(300px, .34fr) minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}

.notifications-feed-full {
    width: 100%;
    max-width: min(1280px, calc(100vw - 32px));
    margin: 0 auto;
}

.notification-rooms-page {
    width: min(1500px, calc(100vw - 32px));
    max-width: none;
    margin-inline: auto;
}

.notification-rooms-page .notifications-feed-full {
    max-width: 100%;
}

.notification-rooms-page .notification-rooms-hero {
    grid-template-columns: minmax(0, 1fr);
    min-height: 240px;
}

.message-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin: 0 auto 18px;
    max-width: 100%;
}

.message-dashboard-widget {
    display: grid;
    gap: 8px;
    min-height: 190px;
    padding: clamp(18px, 2.5vw, 26px);
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .95);
    box-shadow: var(--shadow-soft);
    color: var(--text);
    text-decoration: none;
}

.message-dashboard-widget:hover,
.message-dashboard-widget:focus-visible {
    transform: translateY(-1px);
    border-color: rgba(22, 118, 88, .48);
}

.message-dashboard-widget strong {
    font-size: clamp(38px, 5vw, 68px);
    line-height: .95;
}

.message-dashboard-widget h2,
.message-dashboard-widget p {
    margin: 0;
}

.message-dashboard-widget p {
    color: var(--muted);
}

@media (max-width: 760px) {
    .message-dashboard-grid {
        grid-template-columns: 1fr;
    }
}

.notification-primary-channel {
    margin-top: 18px;
}

.notification-primary-channel .notifications-compose-card {
    position: static;
    top: auto;
    margin: 14px 0;
}

.rooms-order-private-first .notification-private-section {
    order: 1;
}

.rooms-order-private-first .notification-salons-section {
    order: 2;
}

.rooms-order-salons-first .notification-salons-section {
    order: 1;
}

.rooms-order-salons-first .notification-private-section {
    order: 2;
}

.notification-private-panel {
    order: 3;
}

.notification-group-panel {
    order: 4;
}

.notifications-compose-card,
.notification-feed-block {
    padding: clamp(16px, 2.4vw, 24px);
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.notifications-compose-card {
    position: sticky;
    top: 92px;
    display: grid;
    gap: 14px;
    border-top: 5px solid var(--accent);
}

.notifications-compose-card h2,
.notification-feed-block h2 {
    margin: 0;
    font-size: clamp(26px, 3vw, 38px);
}

.notifications-compose-card p {
    margin: 0;
    color: var(--muted);
    line-height: 1.35;
}

.notification-search-form,
.notification-private-form {
    display: grid;
    gap: 12px;
}

.notification-search-form label,
.notification-private-form label {
    display: grid;
    gap: 7px;
    font-weight: 850;
}

.live-member-results {
    display: grid;
    gap: 8px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .9);
    border-radius: 8px;
    background: rgba(248, 252, 250, .82);
}

.live-member-results legend {
    padding: 0 6px;
    font-weight: 900;
}

.notifications-feed {
    display: grid;
    gap: 18px;
}

.notification-card-list {
    display: grid;
    gap: 12px;
    margin-top: 14px;
}

.notification-room-channel-list {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
}

.notification-private-conversation-list {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr));
}

.notification-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
}

.chip-link {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 8px 14px;
    border: 1px solid rgba(188, 209, 202, .9);
    border-radius: 999px;
    background: rgba(238, 248, 244, .74);
    color: var(--text);
    font-weight: 900;
    text-decoration: none;
}

.chip-link:hover,
.chip-link:focus-visible,
.chip-link.is-active {
    border-color: rgba(22, 118, 88, .6);
    background: var(--green);
    color: #fff;
}

.notification-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
    padding: 16px;
    border: 1px solid var(--line);
    border-left: 5px solid rgba(22, 118, 88, .22);
    border-radius: 8px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(247, 251, 249, .88)),
        linear-gradient(90deg, rgba(22, 118, 88, .04) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .035) 1px, transparent 1px);
    background-size: auto, 42px 42px, 42px 42px;
}

.notification-conversation-list {
    gap: 14px;
}

.notification-conversation-card {
    position: relative;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    color: inherit;
    text-decoration: none;
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.notification-conversation-card:hover,
.notification-conversation-card:focus-visible {
    transform: translateY(-2px);
    border-left-color: var(--accent);
    box-shadow: var(--shadow-soft);
}

.notification-card-arrow {
    justify-self: end;
    align-self: center;
    padding: 8px 12px;
    border: 1px solid rgba(188, 209, 202, .9);
    border-radius: 999px;
    background: rgba(238, 248, 244, .9);
    color: var(--green);
    font-weight: 900;
}

.notification-card.is-highlighted {
    border-left-color: var(--accent);
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(237, 248, 244, .92)),
        linear-gradient(90deg, rgba(22, 118, 88, .055) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .04) 1px, transparent 1px);
    background-size: auto, 42px 42px, 42px 42px;
}

.notification-card time {
    color: var(--muted);
    font-size: 13px;
    font-weight: 850;
}

.notification-card h3 {
    margin: 4px 0 0;
    font-size: clamp(21px, 2vw, 28px);
}

.notification-card p {
    margin: 6px 0 0;
    color: var(--muted);
    line-height: 1.4;
}

.notification-card .actions {
    justify-content: flex-start;
}

.notification-card .actions form {
    margin: 0;
}

.notification-card.is-empty {
    border-left-color: rgba(47, 117, 189, .45);
}

.section-head-row.compact {
    align-items: start;
    gap: 10px;
}

.notification-channel-member-card {
    gap: 16px;
    border-left-color: rgba(47, 117, 189, .5);
}

.notification-room-channel-list .notification-channel-member-card {
    min-height: 170px;
    align-content: space-between;
}

.notification-private-panel {
    position: static;
}

.notification-private-panel summary {
    cursor: pointer;
    color: var(--text);
    font-size: clamp(22px, 2.5vw, 30px);
    font-weight: 950;
}

.notification-private-panel details[open] {
    display: grid;
    gap: 14px;
}

.notification-channel-hero {
    min-height: 260px;
}

.notification-channel-hero .notifications-hero-card {
    align-self: stretch;
    align-content: center;
}

.notification-channel-layout {
    grid-template-columns: minmax(0, 1fr);
}

.notification-channel-thread {
    min-width: 0;
}

.channel-message-thread-list {
    margin-top: 16px;
    gap: 12px;
}

.channel-message-thread-item {
    background: #fff;
}

.channel-message-thread-item h3 {
    margin: 4px 0 0;
    font-size: clamp(20px, 2vw, 28px);
}

.channel-message-thread-item p {
    color: var(--text);
    line-height: 1.55;
}

.notification-channel-compose {
    border-top-color: rgba(47, 117, 189, .7);
}

.notification-channel-compose-inline {
    position: static;
    top: auto;
    width: 100%;
    padding: 0;
    gap: 0;
    overflow: hidden;
}

.notification-channel-compose-inline > summary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 16px;
    align-items: center;
    padding: clamp(14px, 2.2vw, 20px);
    cursor: pointer;
    list-style: none;
}

.notification-channel-compose-inline > summary::-webkit-details-marker {
    display: none;
}

.notification-channel-compose-inline > summary::after {
    display: grid;
    grid-row: 1 / 4;
    grid-column: 2;
    align-self: center;
    justify-self: end;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(188, 209, 202, .9);
    border-radius: 50%;
    background: #f4fbf8;
    color: var(--green);
    font-size: 22px;
    font-weight: 950;
    content: "+";
}

.notification-channel-compose-inline[open] > summary::after {
    content: "-";
}

.notification-channel-compose-inline > summary .eyebrow {
    grid-column: 1;
}

.notification-channel-compose-inline > summary strong {
    grid-column: 1;
    color: var(--text);
    font-size: clamp(22px, 3vw, 34px);
    line-height: 1.05;
}

.notification-channel-compose-inline > summary span:last-child {
    grid-column: 1;
    color: var(--muted);
    font-weight: 850;
}

.notification-channel-compose-body {
    display: grid;
    gap: 14px;
    padding: 0 clamp(14px, 2.2vw, 20px) clamp(16px, 2.4vw, 24px);
}

.notification-channel-form {
    display: grid;
    gap: 10px;
    padding-top: 12px;
    border-top: 1px solid rgba(188, 209, 202, .68);
}

.notification-channel-form label {
    display: grid;
    gap: 6px;
    font-weight: 850;
}

.notification-channel-form .field-hint {
    margin: -2px 0 4px;
    color: var(--muted);
    font-size: 14px;
    font-weight: 750;
}

.message-location-picker {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: #f8fbfa;
}

.message-location-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.message-poll-builder {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: #fffdf7;
}

.message-poll-builder > strong {
    color: var(--text);
    font-weight: 950;
}

.message-poll-options {
    display: grid;
    gap: 8px;
}

.notification-channel-search {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 10px;
    align-items: end;
    margin-top: 16px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: #f8fbfa;
}

.notification-channel-search label {
    display: grid;
    gap: 6px;
    margin: 0;
    font-weight: 850;
}

.channel-message-list {
    display: grid;
    gap: 8px;
}

.channel-message-item {
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: rgba(238, 248, 244, .62);
}

.channel-message-item p {
    margin: 4px 0;
}

.channel-message-item small {
    color: var(--muted);
    font-weight: 800;
}

.social-channel-post {
    display: grid;
    gap: 14px;
    overflow: hidden;
    padding: 0;
    border-color: rgba(219, 226, 231, .95);
    box-shadow: 0 16px 38px rgba(15, 23, 42, .08);
}

.social-post-head,
.social-channel-post > h3,
.social-post-body,
.social-post-poll,
.social-post-location,
.social-post-actions,
.social-comments {
    margin-inline: clamp(14px, 2vw, 20px);
}

.social-post-head {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    padding-top: clamp(14px, 2vw, 20px);
}

.social-post-head strong,
.social-comment-bubble strong {
    color: #d87315;
    font-weight: 950;
}

.social-post-head time,
.social-comment-content time {
    display: block;
    margin-top: 2px;
    color: #6b7280;
    font-size: 13px;
    font-weight: 750;
}

.social-avatar {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border: 3px solid rgba(245, 164, 36, .42);
    border-radius: 999px;
    background: linear-gradient(135deg, #fff7ed, #eef8f4);
    color: #167658;
    font-weight: 950;
    line-height: 1;
}

.social-avatar.small {
    width: 38px;
    height: 38px;
    border-width: 2px;
    font-size: 13px;
}

.social-avatar.tiny {
    width: 30px;
    height: 30px;
    border-width: 2px;
    font-size: 11px;
}

.social-post-body {
    color: var(--text);
    font-size: clamp(17px, 1.6vw, 20px);
    line-height: 1.55;
}

.social-post-photo {
    margin: 0;
    background: #f3f4f6;
}

.social-post-photo img {
    display: block;
    width: 100%;
    max-height: 560px;
    object-fit: cover;
}

.social-post-poll {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid rgba(245, 164, 36, .34);
    border-radius: 8px;
    background: #fffaf0;
}

.social-post-poll > strong {
    color: var(--text);
    font-size: 18px;
    font-weight: 950;
}

.social-post-poll form {
    display: grid;
    gap: 8px;
}

.poll-option {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    align-items: center;
    overflow: hidden;
    min-height: 46px;
    padding: 10px 12px;
    border: 1px solid rgba(188, 209, 202, .86);
    border-radius: 8px;
    background: #fff;
    color: var(--text);
    text-align: left;
}

.poll-option span,
.poll-option small {
    position: relative;
    z-index: 1;
}

.poll-option span {
    font-weight: 900;
}

.poll-option small {
    color: var(--muted);
    font-weight: 800;
}

.poll-option i {
    position: absolute;
    inset: 0 auto 0 0;
    max-width: 100%;
    background: rgba(245, 164, 36, .18);
    content: "";
    pointer-events: none;
}

.poll-option.is-selected {
    border-color: #d87315;
    box-shadow: inset 4px 0 0 #d87315;
}

.social-post-location {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .78);
    border-radius: 8px;
    background: #f8fbfa;
}

.social-post-location div {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.social-post-location strong {
    color: #167658;
    font-weight: 950;
}

.social-post-location span {
    color: var(--muted);
    font-weight: 800;
    overflow-wrap: anywhere;
}

.social-post-location .button {
    flex: 0 0 auto;
}

.social-post-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid rgba(229, 231, 235, .95);
    border-bottom: 1px solid rgba(229, 231, 235, .95);
    color: #4b5563;
    font-weight: 850;
}

.social-post-actions a {
    color: #d87315;
    font-weight: 950;
    text-decoration: none;
}

.social-comments {
    display: grid;
    gap: 12px;
    padding-bottom: clamp(14px, 2vw, 20px);
}

.social-comments h4 {
    margin: 0;
    color: #6b7280;
    font-size: 14px;
    font-weight: 950;
    letter-spacing: 0;
    text-transform: uppercase;
}

.social-comment {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 10px;
}

.social-comment-content {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.social-comment-bubble {
    width: fit-content;
    max-width: min(100%, 720px);
    padding: 10px 12px;
    border: 1px solid rgba(229, 231, 235, .95);
    border-radius: 8px;
    background: #f8fafc;
}

.social-comment-bubble p {
    margin: 4px 0 0;
    color: #374151;
    line-height: 1.45;
}

.social-comment-photo {
    display: block;
    width: min(100%, 360px);
    max-height: 260px;
    margin-top: 8px;
    border-radius: 8px;
    object-fit: cover;
}

.social-subcomments {
    display: grid;
    gap: 10px;
    margin-top: 4px;
    padding-left: clamp(10px, 3vw, 28px);
    border-left: 2px solid rgba(245, 164, 36, .34);
}

.social-reply-form,
.social-comment-form {
    display: grid;
    gap: 8px;
    padding: 10px;
    border: 1px solid rgba(229, 231, 235, .9);
    border-radius: 8px;
    background: #fff;
}

.social-comment-form {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
}

.social-reply-form textarea,
.social-comment-form textarea {
    min-height: 44px;
    resize: vertical;
}

.social-form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    justify-content: space-between;
    margin-top: 8px;
}

.social-file-input {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    color: #4b5563;
    font-size: 14px;
    font-weight: 900;
}

.social-file-input input {
    max-width: min(100%, 240px);
    font-size: 13px;
}

.notification-channel-grid {
    display: grid;
    gap: 16px;
}

.notification-channel-card {
    display: grid;
    gap: 14px;
    padding: clamp(16px, 2.2vw, 22px);
    border: 1px solid var(--line);
    border-left: 5px solid var(--accent);
    border-radius: 8px;
    background:
        linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(247, 251, 249, .9)),
        linear-gradient(90deg, rgba(22, 118, 88, .035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(47, 117, 189, .03) 1px, transparent 1px);
    background-size: auto, 42px 42px, 42px 42px;
    box-shadow: var(--shadow-soft);
}

.notification-channel-card-head {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: start;
}

.notification-channel-card h3 {
    margin: 0;
    font-size: clamp(26px, 3vw, 38px);
}

.notification-channel-card p {
    margin: 6px 0 0;
    color: var(--muted);
    line-height: 1.4;
}

.notification-channel-summary {
    display: grid;
    gap: 6px;
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: rgba(238, 248, 244, .54);
}

.notification-channel-summary p {
    margin: 0;
}

.notification-channel-card details {
    padding: 12px;
    border: 1px solid rgba(188, 209, 202, .78);
    border-radius: 8px;
    background: rgba(255, 255, 255, .78);
}

.notification-channel-card summary {
    cursor: pointer;
    font-weight: 900;
}

.notification-channel-role-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.notification-channel-role-grid fieldset,
.notification-channel-admin fieldset {
    min-width: 0;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .72);
}

.notification-channel-admin legend {
    padding: 0 6px;
    color: var(--muted);
    font-weight: 900;
}

.feature-grid.compact {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px;
}

.feature-grid.compact .feature-check {
    min-height: auto;
    padding: 10px;
}

@media (max-width: 980px) {
    .notifications-hero,
    .notifications-layout {
        grid-template-columns: 1fr;
    }

    .notification-channel-layout {
        grid-template-columns: 1fr;
    }

    .notifications-hero {
        min-height: auto;
        background-size: auto, 78% auto, 56px 56px, 56px 56px, auto;
    }

    .notifications-compose-card {
        position: static;
    }

    .notification-channel-card-head,
    .notification-channel-role-grid {
        grid-template-columns: 1fr;
        display: grid;
    }
}

@media (max-width: 620px) {
    .notifications-hero,
    .notifications-compose-card,
    .notification-feed-block {
        padding: 16px;
    }

    .notifications-hero {
        background-position: right bottom, right bottom, 0 0, 0 0, 0 0;
    }

    .notifications-hero h1 {
        font-size: clamp(34px, 13vw, 48px);
    }

    .notifications-hero-stats {
        grid-template-columns: 1fr 1fr;
    }

    .notifications-hero-stats span {
        min-height: 66px;
        padding: 10px;
    }

    .notification-card .actions,
    .notifications-compose-card .actions {
        display: grid;
        grid-template-columns: 1fr;
    }

    .notification-channel-compose-inline {
        padding: 0;
    }

    .notification-channel-compose-inline > summary {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .notification-channel-search {
        grid-template-columns: 1fr;
    }

    .notification-conversation-card {
        grid-template-columns: 1fr;
    }

    .notification-card .actions > *,
    .notifications-compose-card .actions > * {
        width: 100%;
    }

    .social-post-head {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .social-post-head .pill {
        grid-column: 1 / -1;
        width: fit-content;
    }

    .social-post-head,
    .social-channel-post > h3,
    .social-post-body,
    .social-post-poll,
    .social-post-location,
    .social-post-actions,
    .social-comments {
        margin-inline: 12px;
    }

    .poll-option {
        grid-template-columns: 1fr;
    }

    .social-post-location {
        align-items: stretch;
        flex-direction: column;
    }

    .social-comment-form {
        grid-template-columns: 1fr;
    }

    .social-subcomments {
        padding-left: 12px;
    }

    .social-post-photo img {
        max-height: 420px;
    }
}

.point-review-card {
    gap: 10px;
}

.review-photo {
    width: min(100%, 520px);
    max-height: 320px;
    object-fit: cover;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.auth-page {
    min-height: calc(100vh - 72px);
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr);
}

.auth-visual {
    padding: 58px 7vw;
    background: #d9ebe4;
}

.auth-visual h1 {
    margin-top: 22px;
}

.auth-visual p {
    max-width: 620px;
    font-size: 22px;
    line-height: 1.35;
    font-weight: 700;
}

.auth-panel {
    align-self: center;
    margin: 28px;
    padding: 24px;
}

.signup-page {
    grid-template-columns: minmax(280px, .82fr) minmax(440px, 1fr);
}

.signup-panel {
    align-self: center;
    max-width: 720px;
}

.auth-panel-intro {
    margin-top: -4px;
    color: var(--muted);
    font-weight: 700;
    line-height: 1.45;
}

.form-grid.compact {
    gap: 12px;
}

.plan-comparator {
    display: grid;
    gap: 14px;
    margin: 10px 0;
}

.plan-comparator h3 {
    margin: 0 0 6px;
}

.plan-comparator p {
    margin: 0;
    color: var(--muted);
}

.plan-comparison-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 12px;
}

.plan-choice-card {
    position: relative;
    display: grid;
    gap: 10px;
    padding: 16px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow-soft);
    cursor: pointer;
}

.plan-choice-card:has(input:checked) {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(22, 118, 88, .14), var(--shadow-soft);
}

.plan-choice-card input {
    position: absolute;
    top: 14px;
    right: 14px;
}

.plan-choice-head,
.plan-choice-list,
.plan-choice-limits {
    display: grid;
    gap: 6px;
}

.plan-choice-head strong {
    padding-right: 28px;
    font-size: 1.08rem;
}

.plan-choice-head span {
    color: var(--accent-strong);
    font-weight: 900;
}

.plan-choice-meta,
.plan-choice-desc,
.plan-choice-limits {
    color: var(--muted);
}

.plan-choice-list span,
.plan-choice-limits span {
    display: inline-flex;
    width: fit-content;
    padding: 6px 10px;
    border-radius: 999px;
    background: #edf6f2;
    font-size: .9rem;
    font-weight: 800;
}

.plan-choice-limits span {
    background: #f8fbfa;
    border: 1px solid var(--line);
    font-weight: 700;
}

.stack-form,
.contact-form {
    display: grid;
    gap: 12px;
}

.stack-form label,
.contact-form label {
    display: grid;
    gap: 6px;
    font-weight: 800;
}

.stack-form .terms-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #f8fbfa;
    color: var(--text);
    font-weight: 800;
    line-height: 1.35;
}

.terms-check input {
    width: 18px;
    height: 18px;
    margin-top: 2px;
    accent-color: var(--accent);
    flex: 0 0 auto;
}

.terms-check a {
    color: var(--accent-strong);
}

.signup-next-step {
    margin: 2px 0;
}

.signup-next-step p {
    margin: 4px 0 0;
}

.hidden-field {
    position: absolute;
    left: -9999px;
}

.home-landing {
    background: #fff;
}

.home-map-hero {
    position: relative;
    min-height: min(640px, calc(100vh - 72px));
    overflow: hidden;
    border-bottom: 1px solid var(--line);
    background:
        linear-gradient(90deg, rgba(255, 255, 255, .99) 0%, rgba(255, 255, 255, .98) 32%, rgba(255, 255, 255, .82) 54%, rgba(255, 255, 255, .42) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png") center / cover no-repeat,
        #e5f0ec;
}

.home-map-hero.has-real-map {
    background:
        linear-gradient(90deg, rgba(255, 255, 255, .99) 0%, rgba(255, 255, 255, .96) 32%, rgba(255, 255, 255, .78) 54%, rgba(255, 255, 255, .28) 100%),
        var(--home-map-image) center / cover no-repeat,
        #e5f0ec;
}

.home-map-hero.has-real-map .home-map-surface {
    background: linear-gradient(90deg, rgba(255, 255, 255, .88), rgba(255, 255, 255, .2));
    opacity: 1;
}

.home-map-surface {
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(255, 255, 255, .96) 0%, rgba(255, 255, 255, .72) 44%, rgba(255, 255, 255, .2) 100%),
        url("https://tile.openstreetmap.org/7/64/45.png") right center / 68% auto no-repeat;
    filter: saturate(.72) contrast(.9);
    opacity: .68;
}

.home-hero-map-points {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
}

.home-map-dot {
    position: absolute;
    display: grid;
    place-items: center;
    border-radius: 999px;
    box-shadow: 0 14px 30px rgba(18, 37, 31, .18);
}

.home-map-dot {
    width: 18px;
    height: 18px;
    border: 3px solid #fff;
    background: #137a5c;
    box-shadow: 0 10px 18px rgba(18, 37, 31, .14);
}

.home-map-dot-a {
    top: 16%;
    left: 60%;
}

.home-map-dot-b {
    top: 20%;
    left: 76%;
}

.home-map-dot-c {
    top: 28%;
    left: 53%;
}

.home-map-dot-d {
    top: 33%;
    left: 84%;
}

.home-map-dot-e {
    top: 42%;
    left: 66%;
}

.home-map-dot-f {
    top: 49%;
    left: 78%;
}

.home-map-dot-g {
    top: 57%;
    left: 59%;
}

.home-map-dot-h {
    top: 63%;
    left: 86%;
}

.home-map-dot-i {
    top: 71%;
    left: 70%;
}

.home-map-dot-j {
    top: 76%;
    left: 82%;
}

.home-map-dot-k {
    top: 24%;
    left: 92%;
}

.home-map-dot-l {
    top: 68%;
    left: 53%;
}

.home-hero-copy {
    position: relative;
    z-index: 2;
    display: grid;
    align-content: center;
    justify-items: start;
    width: min(640px, calc(100% - 44px));
    min-height: min(640px, calc(100vh - 72px));
    padding: 58px 0 58px clamp(22px, 5vw, 76px);
}

.home-hero-copy h1 {
    margin: 0 0 14px;
    color: #073d2c;
    font-size: clamp(52px, 7vw, 88px);
    line-height: .92;
}

.home-hero-copy p {
    max-width: 500px;
    margin: 0 0 24px;
    color: #18362f;
    font-size: clamp(20px, 2.4vw, 26px);
    font-weight: 750;
    line-height: 1.32;
}

.home-search-panel {
    width: min(100%, 560px);
    margin: 0 0 14px;
}

.home-search-panel form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    padding: 8px;
    border: 1px solid rgba(188, 209, 202, .88);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(12px);
}

.home-search-panel input {
    min-height: 42px;
    border: 0;
    background: transparent;
    box-shadow: none;
}

.home-hero-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, auto));
    gap: 10px;
    margin-top: 24px;
}

.home-hero-stats span {
    display: grid;
    gap: 2px;
    min-width: 106px;
    padding: 10px 12px;
    border: 1px solid rgba(188, 209, 202, .72);
    border-radius: 8px;
    background: rgba(255, 255, 255, .78);
    box-shadow: 0 8px 22px rgba(18, 37, 31, .06);
}

.home-hero-stats strong {
    color: #073d2c;
    font-size: 18px;
}

.home-hero-stats small {
    color: var(--muted);
    font-size: 13px;
    font-weight: 750;
}

.home-feature-band {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 22px;
    padding: 38px clamp(22px, 5vw, 76px);
    border-bottom: 1px solid var(--line);
    background: linear-gradient(180deg, #f7fbf9, #fff);
}

.home-feature-band article {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr);
    gap: 18px;
    align-items: center;
    min-width: 0;
    padding-right: 22px;
    border-right: 1px solid var(--line);
}

.home-feature-band article:last-child {
    border-right: 0;
}

.home-feature-band article > span {
    display: grid;
    place-items: center;
    width: 74px;
    height: 74px;
    border-radius: 999px;
    background: radial-gradient(circle at 35% 25%, #2a815e, #0d5d43);
    box-shadow: 0 18px 36px rgba(18, 37, 31, .18);
}

.home-feature-band img {
    width: 34px;
    height: 34px;
    object-fit: contain;
}

.home-feature-band h2,
.home-feature-band p {
    margin: 0;
}

.home-feature-band h2 {
    font-size: 20px;
}

.home-feature-band p {
    margin-top: 8px;
    color: var(--muted);
    line-height: 1.45;
}

.home-feature-band a {
    display: inline-flex;
    margin-top: 12px;
    color: var(--accent-strong);
    font-weight: 900;
    text-decoration: none;
}

.home-feature-band a::after {
    content: ">";
    margin-left: 8px;
}

.home-community-section {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(320px, 1.1fr);
    gap: clamp(24px, 5vw, 72px);
    align-items: center;
}

.home-community-section h2 {
    font-size: clamp(34px, 5vw, 52px);
    line-height: 1;
}

.home-community-section p {
    max-width: 640px;
    color: var(--muted);
    font-size: 18px;
    line-height: 1.55;
}

.home-preview-stack {
    position: relative;
    display: grid;
    min-height: 320px;
    align-items: end;
    overflow: hidden;
    padding: 26px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background:
        linear-gradient(115deg, rgba(255, 255, 255, .22), rgba(255, 255, 255, .76)),
        url("https://tile.openstreetmap.org/7/62/46.png") center / cover no-repeat,
        #e8f0ed;
    box-shadow: var(--shadow-soft);
}

.home-preview-stack img {
    position: absolute;
    left: 36px;
    bottom: 0;
    width: min(220px, 34%);
    border: 8px solid #fff;
    border-radius: 28px 28px 0 0;
    background: #071d31;
    box-shadow: 0 18px 50px rgba(18, 37, 31, .22);
}

.home-preview-stack div {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 8px;
    justify-self: end;
    width: min(360px, 58%);
    padding: 18px;
    border: 1px solid rgba(188, 209, 202, .86);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--shadow-soft);
}

.home-preview-stack span {
    color: var(--muted);
    line-height: 1.4;
}

.home-real-preview-grid {
    display: grid;
    gap: 14px;
}

.home-real-screen {
    position: relative;
    min-height: 220px;
    overflow: hidden;
    margin: 0;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #e8f0ed;
    box-shadow: var(--shadow-soft);
}

.home-real-screen.is-waiting {
    background:
        linear-gradient(110deg, rgba(255, 255, 255, .28), rgba(255, 255, 255, .7)),
        url("https://tile.openstreetmap.org/7/64/45.png") center / cover no-repeat,
        #e8f0ed;
}

.home-real-screen.is-large {
    min-height: 320px;
}

.home-real-screen img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: inherit;
    object-fit: cover;
    object-position: center;
    filter: saturate(.95) contrast(.96);
}

.home-real-screen figcaption {
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: 16px;
    display: grid;
    gap: 4px;
    max-width: 420px;
    padding: 14px;
    border: 1px solid rgba(188, 209, 202, .82);
    border-radius: 8px;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 12px 34px rgba(18, 37, 31, .14);
    backdrop-filter: blur(14px);
}

.home-real-screen figcaption span {
    color: var(--muted);
    line-height: 1.35;
}

.home-screen-placeholder {
    position: absolute;
    inset: 0;
    filter: saturate(.9);
}

.home-screen-placeholder.is-map {
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .06) 1px, transparent 1px);
    background-size: 56px 56px;
}

.home-placeholder-pill,
.home-placeholder-list,
.home-placeholder-dot,
.home-placeholder-step {
    position: absolute;
    border: 1px solid rgba(188, 209, 202, .88);
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 12px 26px rgba(18, 37, 31, .12);
}

.home-placeholder-pill,
.home-placeholder-list {
    border-radius: 8px;
    color: #10231e;
    font-weight: 900;
}

.home-placeholder-pill {
    top: 18px;
    left: 18px;
    padding: 10px 14px;
}

.home-placeholder-list {
    top: 34px;
    right: 22px;
    width: min(190px, 34%);
    height: calc(100% - 68px);
    padding: 16px;
    background: #fff;
    z-index: 2;
}

.home-placeholder-list::after {
    content: "";
    display: block;
    height: 72%;
    margin-top: 16px;
    border-top: 1px solid var(--line);
    background:
        linear-gradient(#dcebe6, #dcebe6) 0 22px / 72% 10px no-repeat,
        linear-gradient(#dcebe6, #dcebe6) 0 58px / 88% 10px no-repeat,
        linear-gradient(#dcebe6, #dcebe6) 0 94px / 66% 10px no-repeat;
}

.home-placeholder-dot {
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border: 3px solid #fff;
    border-radius: 999px;
    background: #137a5c;
}

.home-placeholder-dot.m1 {
    top: 31%;
    left: 34%;
}

.home-placeholder-dot.m2 {
    top: 20%;
    left: 50%;
}

.home-placeholder-dot.m3 {
    top: 46%;
    left: 45%;
}

.home-placeholder-dot.m4 {
    top: 62%;
    left: 30%;
}

.home-placeholder-dot.m5 {
    top: 56%;
    left: 57%;
}

.home-placeholder-dot.m6 {
    top: 35%;
    left: 64%;
}

.home-placeholder-dot.m7 {
    top: 68%;
    left: 46%;
}

.home-placeholder-dot.m8 {
    top: 25%;
    left: 72%;
}

.home-screen-placeholder.is-trip::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(22, 118, 88, .08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .06) 1px, transparent 1px);
    background-size: 54px 54px;
}

.home-placeholder-route {
    position: absolute;
    left: 21%;
    top: 58%;
    width: 66%;
    height: 2px;
    background: #167658;
    transform: rotate(-12deg);
    transform-origin: left center;
    box-shadow: 0 1px 0 rgba(255, 255, 255, .9);
}

.home-placeholder-step {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border: 5px solid #fff;
    border-radius: 999px;
    background: #137a5c;
    color: #fff;
    font-weight: 950;
}

.home-placeholder-step.s1 {
    left: 29%;
    top: 39%;
}

.home-placeholder-step.s2 {
    left: 48%;
    top: 33%;
}

.home-placeholder-step.s3 {
    left: 64%;
    top: 28%;
}

.home-placeholder-step.s4 {
    left: 78%;
    top: 22%;
    background: #f5ad28;
    color: #10231e;
}

.home-placeholder-step.s5 {
    left: 57%;
    top: 31%;
    background: #f5ad28;
    color: #10231e;
}

.public-info-page {
    display: grid;
    gap: 22px;
}

.public-info-hero {
    min-height: 300px;
    background:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 50%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png") right center / 48% auto no-repeat,
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        #f8fbfa;
    background-size: auto, 48% auto, 56px 56px, 56px 56px, auto;
}

.pricing-hero {
    background-image:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 50%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/63/45.png"),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        linear-gradient(135deg, #f8fbfa, #edf7f3);
}

.download-hero {
    background-image:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 50%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/62/45.png"),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        linear-gradient(135deg, #f8fbfa, #edf7f3);
}

.contact-hero {
    background-image:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 50%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/62/46.png"),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        linear-gradient(135deg, #f8fbfa, #edf7f3);
}

.features-hero {
    background-image:
        linear-gradient(100deg, rgba(255, 255, 255, .97) 0%, rgba(255, 255, 255, .88) 50%, rgba(255, 255, 255, .64) 100%),
        url("https://tile.openstreetmap.org/7/64/45.png"),
        linear-gradient(90deg, rgba(22, 118, 88, .06) 1px, transparent 1px),
        linear-gradient(0deg, rgba(39, 111, 191, .045) 1px, transparent 1px),
        linear-gradient(135deg, #f8fbfa, #edf7f3);
}

.features-route-panel {
    min-height: 210px;
}

.features-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.features-flow article,
.features-proof-grid article {
    display: grid;
    gap: 8px;
    align-content: start;
    padding: 20px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    box-shadow: var(--shadow-soft);
}

.features-flow span {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 999px;
    background: #e7f5ef;
    color: var(--accent);
    font-weight: 950;
}

.features-flow strong {
    font-size: 20px;
}

.features-flow p,
.features-showcase p,
.features-proof-grid p,
.features-cta-panel p {
    margin: 0;
    color: var(--muted);
    line-height: 1.5;
}

.features-showcase {
    align-items: stretch;
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--line);
    border-radius: 8px;
    background: linear-gradient(135deg, #ffffff, #f4faf7);
    box-shadow: var(--shadow-soft);
}

.features-showcase h2 {
    max-width: 720px;
}

.features-map-card {
    position: relative;
    min-height: 320px;
    overflow: hidden;
    border: 1px solid rgba(188, 209, 202, .9);
    border-radius: 8px;
    background:
        linear-gradient(115deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, .64)),
        url("https://tile.openstreetmap.org/7/64/45.png") center / cover no-repeat,
        #e8f0ed;
}

.features-map-zone {
    position: absolute;
    inset: 48px 58px 70px 64px;
    border: 2px dashed #117a5b;
    background: rgba(22, 118, 88, .08);
}

.features-map-pin {
    position: absolute;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 5px solid #fff;
    border-radius: 999px;
    background: #137a5c;
    color: #fff;
    font-weight: 950;
    box-shadow: 0 12px 26px rgba(18, 37, 31, .18);
}

.features-map-pin.p1 {
    top: 38%;
    left: 34%;
}

.features-map-pin.p2 {
    top: 28%;
    left: 58%;
    background: #f5ad28;
    color: #10231e;
}

.features-map-pin.p3 {
    top: 58%;
    left: 66%;
}

.features-map-pin.p4 {
    top: 50%;
    left: 48%;
}

.features-map-card div {
    position: absolute;
    left: 18px;
    right: 18px;
    bottom: 18px;
    display: grid;
    gap: 4px;
    padding: 14px;
    border: 1px solid rgba(188, 209, 202, .88);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow-soft);
}

.features-map-card small {
    color: var(--muted);
    font-weight: 750;
}

.features-module-grid article {
    position: relative;
    display: grid;
    gap: 10px;
    align-content: start;
    min-height: 190px;
}

.features-module-grid article > span {
    justify-self: start;
    padding: 5px 10px;
    border-radius: 999px;
    background: #e7f5ef;
    color: var(--accent);
    font-size: 12px;
    font-weight: 950;
    text-transform: uppercase;
}

.features-module-grid h3,
.features-module-grid p {
    margin: 0;
}

.features-proof-grid article {
    min-height: 180px;
}

.features-proof-grid h2 {
    margin: 0;
    font-size: 24px;
}

.features-cta-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: clamp(22px, 4vw, 30px);
}

.features-cta-panel h2 {
    margin-bottom: 8px;
}

.public-info-panel p {
    margin: 0;
    color: var(--muted);
    overflow-wrap: anywhere;
}

.public-plan-grid,
.download-status-grid {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.public-plan-grid article,
.download-status-grid article {
    min-height: 0;
}

.public-plan-grid h3 {
    margin: 0;
    font-size: clamp(24px, 3vw, 34px);
}

.public-info-empty {
    justify-items: start;
}

.public-comparison-panel {
    overflow: hidden;
}

.download-install-panel {
    position: relative;
}

.contact-info-grid article {
    display: grid;
    gap: 10px;
    align-content: start;
}

.contact-info-grid h2,
.contact-info-grid p,
.contact-info-grid ul {
    margin-top: 0;
}

.contact-panel {
    max-width: 760px;
}

.contact-panel button {
    justify-self: start;
}

.legal-page {
    display: grid;
    gap: 24px;
}

.legal-page .page-head {
    max-width: 980px;
}

.legal-page .page-head p {
    max-width: 820px;
}

.legal-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px;
}

.legal-grid article,
.legal-panel {
    background: rgba(255, 255, 255, .94);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 22px;
    box-shadow: var(--shadow-soft);
}

.legal-grid h2,
.legal-panel h2 {
    margin: 0 0 12px;
    font-size: 1.25rem;
}

.legal-grid p,
.legal-panel p {
    margin: 0 0 10px;
}

.legal-grid ul {
    margin: 0;
    padding-left: 20px;
}

.legal-grid li {
    margin-bottom: 8px;
}

.legal-page code {
    padding: 2px 6px;
    border-radius: 6px;
    background: var(--soft);
    font-size: .92em;
}

.site-footer {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    padding: 28px 22px;
    border-top: 1px solid var(--line);
    background: rgba(255, 255, 255, .92);
}

.site-footer nav {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.footer-link-button {
    min-height: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-weight: 400;
    text-decoration: underline;
    box-shadow: none;
}

.footer-link-button:hover {
    transform: none;
    box-shadow: none;
}

.cookie-consent {
    position: fixed;
    right: 18px;
    bottom: 18px;
    left: 18px;
    z-index: 5200;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 18px;
    max-width: 1080px;
    margin: 0 auto;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 22px 60px rgba(8, 31, 23, .22);
}

.cookie-consent[hidden],
.cookie-preferences[hidden] {
    display: none;
}

.cookie-consent__text {
    display: grid;
    gap: 6px;
}

.cookie-consent__text p {
    margin: 0;
    color: var(--muted);
}

.cookie-consent__actions,
.cookie-preferences__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-end;
}

.cookie-consent__actions button,
.cookie-preferences__actions button {
    min-width: 136px;
}

.cookie-preferences {
    position: fixed;
    inset: 0;
    z-index: 5300;
    display: grid;
    place-items: center;
    padding: 18px;
    background: rgba(6, 22, 18, .5);
}

.cookie-preferences__panel {
    width: min(680px, 100%);
    max-height: min(720px, 92vh);
    overflow: auto;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 24px 80px rgba(8, 31, 23, .28);
}

.cookie-preferences__head,
.cookie-preferences__actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 18px;
}

.cookie-preferences__head {
    border-bottom: 1px solid var(--line);
}

.cookie-preferences__head h2,
.cookie-preferences__head p {
    margin: 0;
}

.cookie-preferences__body {
    display: grid;
    gap: 12px;
    padding: 18px;
}

.cookie-choice {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
}

.cookie-choice.is-required {
    background: var(--soft);
}

.cookie-choice input {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--accent);
}

.cookie-choice span {
    display: grid;
    gap: 4px;
}

.cookie-choice small {
    color: var(--muted);
    line-height: 1.45;
}

.cookie-preferences__actions {
    border-top: 1px solid var(--line);
}

.source-credit {
    color: var(--muted);
    font-size: .9rem;
    margin-top: 6px;
}

@media (max-width: 960px) {
    .site-header {
        align-items: center;
        flex-wrap: wrap;
        gap: 10px 12px;
        padding: 10px 14px;
    }

    .brand {
        flex: 1;
        min-width: 0;
    }

    .site-menu-toggle {
        display: inline-flex;
    }

    .top-nav,
    .account-zone {
        display: none;
        width: 100%;
    }

    .site-header.is-menu-open .top-nav {
        order: 3;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
        gap: 8px;
        max-height: min(70vh, 520px);
        overflow: auto;
        padding-top: 10px;
        border-top: 1px solid var(--line);
    }

    .site-header.is-menu-open .top-nav a,
    .site-header.is-menu-open .ghost-link,
    .site-header.is-menu-open .account-zone button,
    .site-header.is-menu-open .account-zone .button {
        justify-content: center;
        min-height: 44px;
        padding: 10px 12px;
        border: 1px solid var(--line);
        background: #fff;
        text-align: center;
        box-shadow: var(--shadow-soft);
    }

    .site-header.is-menu-open .account-zone {
        order: 4;
        display: flex;
        flex-wrap: wrap;
        justify-content: stretch;
        gap: 8px;
    }

    .site-header.is-menu-open .account-zone > *,
    .site-header.is-menu-open .account-zone form,
    .site-header.is-menu-open .account-zone form button {
        flex: 1 1 150px;
    }

    .account-zone {
        justify-content: stretch;
    }

    .hero {
        min-height: 660px;
        padding: 52px 22px 128px;
    }

    .legal-grid {
        grid-template-columns: 1fr;
    }

    .site-footer {
        flex-direction: column;
    }

    .cookie-consent {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .cookie-consent__actions,
    .cookie-preferences__actions {
        justify-content: stretch;
    }

    .cookie-consent__actions button,
    .cookie-preferences__actions button {
        flex: 1 1 150px;
    }

    .intro-strip,
    .feature-grid,
    .home-feature-band,
    .home-community-section,
    .member-dashboard-hero,
    .member-workflow-strip,
    .member-action-grid,
    .public-journal-grid,
    .public-trip-grid,
    .user-grid,
    .admin-map-layout,
    .admin-filter-bar,
    .point-filter-bar,
    .guide-card,
    .wizard-single-stage,
    .form-grid,
    .checkbox-grid,
    .service-picker,
    .service-detail-list,
    .compact-checkboxes,
    .wizard-answer-options,
    .wizard-answer-options.multi,
    .wizard-inline-fields,
    .split,
    .map-layout,
    .detail-layout,
    .point-hero-card,
    .point-admin-box,
    .point-detail-grid,
    .review-check-grid,
    .trip-detail-hero,
    .trip-share-hero,
    .public-trips-hero,
    .trips-shared-hero,
    .trips-route-hero,
    .journals-hero,
    .hunts-hero,
    .hunt-form-hero,
    .hunt-help-hero,
    .hunt-help-grid,
    .hunt-detail-hero,
    .journal-detail-head,
    .journals-steps,
    .hunt-builder-flow,
    .hunt-map-action-grid,
    .trip-prep-box,
    .trip-add-form,
    .checklist-lines.large,
    .auth-page {
        grid-template-columns: 1fr;
    }

    .home-map-hero {
        display: grid;
        gap: 18px;
        min-height: auto;
        padding: 22px;
        background:
            linear-gradient(180deg, rgba(255, 255, 255, .96), rgba(255, 255, 255, .74)),
            url("https://tile.openstreetmap.org/7/63/45.png") center / cover no-repeat,
            #e5f0ec;
    }

    .home-map-hero.has-real-map {
        background:
            linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(255, 255, 255, .76)),
            var(--home-map-image) center / cover no-repeat,
            #e5f0ec;
    }

    .home-map-surface {
        inset: 0;
        opacity: .36;
    }

    .home-hero-copy {
        width: 100%;
        min-height: auto;
        padding: 34px 0 0;
    }

    .home-map-panel {
        position: relative;
        top: auto;
        right: auto;
        width: 100%;
        max-height: none;
    }

    .home-map-dot,
    .home-map-zoom,
    .home-hero-map-points {
        display: none;
    }

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

    .home-feature-band {
        padding: 22px;
    }

    .home-feature-band article {
        padding: 0 0 18px;
        border-right: 0;
        border-bottom: 1px solid var(--line);
    }

    .home-feature-band article:last-child {
        padding-bottom: 0;
        border-bottom: 0;
    }

    .home-preview-stack img {
        width: min(180px, 42%);
    }

    .home-preview-stack div {
        width: min(340px, 66%);
    }

    .home-real-preview-grid {
        grid-template-columns: 1fr;
    }

    .home-real-screen,
    .home-real-screen.is-large {
        min-height: 260px;
    }

    .home-placeholder-list {
        width: min(170px, 42%);
    }

    .features-flow {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .features-cta-panel {
        display: grid;
        align-items: start;
    }

    .features-cta-panel .hero-actions {
        justify-content: flex-start;
    }

    .trip-create-panel,
    .journals-create-panel {
        position: static;
    }

    .journals-hero {
        min-height: auto;
        background-size: auto, 78% auto, 56px 56px, 56px 56px, auto;
    }

    .hunts-hero {
        min-height: auto;
    }

    .hunt-form-hero {
        min-height: auto;
        background-size: auto, 86% auto, auto;
    }

    .hunt-form-map-preview {
        min-height: 240px;
    }

    .hunt-help-hero {
        min-height: auto;
        background-size: auto, 86% auto, auto;
    }

    .hunt-help-map {
        min-height: 240px;
    }

    .hunt-detail-hero {
        background-size: auto, 82% auto, 56px 56px, 56px 56px, auto;
    }

    .hunt-detail-hero .page-actions {
        justify-content: flex-start;
        max-width: none;
    }

    .hunt-step-card {
        padding: 14px;
    }

    .hunt-step-card-head {
        grid-template-columns: 1fr;
    }

    .hunt-step-order {
        justify-items: start;
        min-width: 0;
    }

    .hunt-step-order > span {
        width: 44px;
        height: 44px;
        font-size: 18px;
    }

    .hunts-hero-map {
        min-height: 240px;
    }

    .journal-detail-head {
        background-size: auto, 78% auto, 56px 56px, 56px 56px, auto;
    }

    .trip-detail-hero .point-detail-actions {
        justify-content: flex-start;
        max-width: none;
    }

    .trip-summary-grid {
        grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    }

    .trip-share-control-panel {
        grid-template-columns: minmax(0, 1fr);
    }

    .trip-share-control-actions {
        justify-content: flex-start;
    }

    .member-map-layout .admin-map-panel {
        position: static;
        max-height: none;
        overflow: visible;
    }

    .page-head.with-actions {
        display: grid;
        align-items: start;
    }

    .journal-detail-page {
        max-width: none;
        padding-top: 24px;
    }

    .journal-detail-head .page-actions {
        position: static;
        justify-content: flex-start;
        max-width: none;
    }

    .journal-main-map,
    .journal-main-map.is-real-world-map {
        min-height: 520px;
        height: 60vh;
    }

    .journal-book-hero,
    .journal-layout-split_left .journal-entry-book-grid,
    .journal-layout-split_right .journal-entry-book-grid {
        grid-template-columns: 1fr;
    }

    .journal-book-hero-image {
        min-height: 320px;
    }

    .journal-layout-split_right .journal-entry-media,
    .journal-layout-split_left .journal-entry-media {
        order: 0;
    }

    .journal-is-share .journal-entry-book-grid,
    .journal-is-share .journal-entry-card:not(:has(.journal-entry-media)) .journal-entry-book-grid {
        grid-template-columns: 1fr;
    }

    .journal-is-share .journal-entry-media {
        grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
        order: 0;
    }

    .journal-is-share .journal-layout-photo_first .journal-entry-media,
    .journal-is-share .journal-layout-split_left .journal-entry-media,
    .journal-is-share .journal-layout-split_right .journal-entry-media {
        order: 0;
    }

    .journal-is-share .journal-photo-grid {
        display: flex;
        grid-template-columns: none;
    }

    .journal-gallery-style-grid .journal-photo-grid,
    .journal-gallery-style-mosaic .journal-photo-grid,
    .journal-gallery-style-story .journal-photo-grid {
        display: grid;
        grid-template-columns: 1fr;
    }

    .journal-gallery-style-mosaic .journal-photo-grid figure:nth-child(4n + 1) {
        grid-column: auto;
        grid-row: auto;
    }

    .journal-gallery-style-story .journal-photo-grid figure {
        grid-template-columns: 1fr;
    }
    }

    .photo-modal-layout {
        grid-template-columns: 1fr;
    }

    .photo-edit-toolbar {
        display: grid;
        align-items: start;
    }

    .photo-ratio-buttons {
        justify-content: flex-start;
    }

    .photo-compact-adjustments {
        grid-template-columns: 1fr;
    }

    .photo-crop-stage {
        min-height: 240px;
    }

    .photo-crop-stage.photo-fit-portrait {
        min-height: 360px;
    }

    .location-gate-head {
        display: grid;
    }

    .location-gate-tools {
        justify-content: flex-start;
    }

    .page-actions {
        justify-content: flex-start;
    }

    .compact-grid {
        grid-template-columns: 1fr 1fr;
    }

    .public-map {
        min-height: 420px;
    }

    .public-map-showcase {
        display: block;
    }

    .public-map-stage {
        display: grid;
        gap: 14px;
        min-height: 0;
        overflow: visible;
        border: 0;
        background: transparent;
        box-shadow: none;
    }

    .public-map-controls-overlay,
    .public-map-cta {
        position: static;
        width: auto;
        max-height: none;
        overflow: visible;
    }

    .public-map-controls-overlay {
        order: -1;
    }

    .public-roadcache-map {
        min-height: 520px;
        height: 60vh;
        overflow: hidden;
        border: 1px solid var(--line);
        border-radius: 8px;
        box-shadow: var(--shadow-soft);
    }

    .compact-tools-head {
        display: grid;
    }

    .compact-map-status {
        max-width: none;
        text-align: left;
    }

    .admin-point-map {
        min-height: 480px;
    }

    .side-panel {
        position: static;
    }

    .point-visual-panel,
    .point-cover-image,
    .point-visual-empty {
        min-height: 300px;
    }
}

@media (max-width: 560px) {
    .top-nav {
        order: 3;
        width: 100%;
    }

    .hero-copy h1 {
        font-size: 54px;
    }

    .home-map-hero {
        padding: 14px;
    }

    .home-hero-copy h1 {
        font-size: clamp(52px, 18vw, 76px);
    }

    .home-hero-copy p {
        font-size: 20px;
    }

    .home-search-panel form,
    .home-map-panel-tools,
    .home-place-row {
        display: grid;
        grid-template-columns: 1fr;
    }

    .home-search-panel button,
    .home-search-panel .button {
        width: 100%;
    }

    .home-place-row {
        align-items: start;
    }

    .home-place-thumb {
        width: 100%;
        height: 120px;
    }

    .home-place-icon {
        display: none;
    }

    .home-place-row > span:last-child {
        justify-self: start;
    }

    .home-feature-band article {
        grid-template-columns: 56px minmax(0, 1fr);
        gap: 12px;
    }

    .home-feature-band article > span {
        width: 56px;
        height: 56px;
    }

    .home-feature-band img {
        width: 28px;
        height: 28px;
    }

    .home-preview-stack {
        min-height: 260px;
    }

    .home-preview-stack img {
        display: none;
    }

    .home-preview-stack div {
        width: 100%;
    }

    .home-real-screen,
    .home-real-screen.is-large {
        min-height: 220px;
    }

    .home-real-screen figcaption {
        position: static;
        max-width: none;
        border-right: 0;
        border-bottom: 0;
        border-left: 0;
        border-radius: 0;
    }

    .features-flow {
        grid-template-columns: 1fr;
    }

    .features-map-card {
        min-height: 240px;
    }

    .features-map-zone {
        inset: 34px 28px 72px;
    }

    .intro-strip {
        margin-top: -60px;
        grid-template-columns: 1fr 1fr;
    }

    .journal-detail-head h1 {
        font-size: clamp(38px, 14vw, 58px);
    }

    .journal-main-map,
    .journal-main-map.is-real-world-map {
        min-height: 430px;
        height: 58vh;
    }

    .journal-detail-head .point-detail-actions .button,
    .journal-detail-head .point-detail-actions button,
    .journal-detail-head .point-detail-actions .share-disabled-note {
        width: 100%;
        min-width: 0;
    }

    .journal-book-hero-image {
        min-height: 240px;
    }

    .journal-entry-media,
    .journal-layout-mosaic .journal-entry-media {
        grid-template-columns: 1fr;
    }

    .journal-photo-manager article {
        grid-template-columns: 1fr;
    }

    .account-stats {
        margin-top: 0;
    }

    .compact-grid {
        grid-template-columns: 1fr;
    }

    .place-card {
        grid-template-columns: 1fr;
    }

    .photo-grid {
        grid-template-columns: 1fr;
    }

    .modal-backdrop {
        padding: 10px;
    }

    .modal-card {
        max-height: 96vh;
    }

    .modal-point-form,
    .modal-head {
        padding: 14px;
    }

    .site-footer {
        display: grid;
    }
}
.duplicate-analysis-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 420px);
    gap: 24px;
    align-items: end;
    margin: 24px 0 32px;
}

.duplicate-analysis-card h2 {
    margin-top: 0;
}

.duplicate-group-list > article {
    padding: 24px;
}

.duplicate-candidate-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 14px;
    margin: 18px 0;
}

.duplicate-candidate-card {
    position: relative;
    display: flex;
    gap: 14px;
    min-width: 0;
    padding: 18px;
    border: 2px solid var(--line, #d5dfdc);
    border-radius: 16px;
    background: var(--surface, #fff);
    cursor: pointer;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.duplicate-candidate-card:hover {
    transform: translateY(-1px);
    border-color: #7eb8a5;
}

.duplicate-candidate-card:has(input[type="radio"]:checked) {
    border-color: #0f7d61;
    box-shadow: 0 0 0 3px rgba(15, 125, 97, .14);
    background: #f2fbf7;
}

.duplicate-candidate-card > input[type="radio"] {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    margin: 2px 0 0;
    accent-color: #0f7d61;
}

.duplicate-candidate-content {
    display: grid;
    gap: 7px;
    min-width: 0;
}

.duplicate-candidate-head {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    justify-content: space-between;
}

.duplicate-candidate-head strong {
    overflow-wrap: anywhere;
}

.duplicate-keep-label {
    color: #0f7d61;
    font-weight: 800;
}

.duplicate-candidate-card:not(:has(input[type="radio"]:checked)) .duplicate-keep-label {
    color: #687773;
    font-weight: 600;
}

.duplicate-moderation-page [data-duplicate-page-feedback] {
    position: fixed;
    z-index: 1200;
    top: 88px;
    right: 20px;
    width: min(440px, calc(100vw - 40px));
    margin: 0;
    box-shadow: 0 14px 36px rgba(20, 48, 41, .2);
}

.duplicate-group-card.duplicate-group-resolved {
    border-color: #0f7d61;
    box-shadow: 0 0 0 3px rgba(15, 125, 97, .12);
    background: #f2fbf7;
}

.duplicate-group-card.duplicate-group-focus {
    outline: 4px solid rgba(15, 125, 97, .28);
    outline-offset: 5px;
}

.duplicate-group-card.duplicate-group-resolved .duplicate-candidate-card:not(:has(input[type="radio"]:checked)) {
    opacity: .58;
}

.duplicate-group-card.duplicate-group-resolved button[type="submit"] {
    background: #0f7d61;
    border-color: #0f7d61;
    opacity: 1;
}

@media (max-width: 760px) {
    .duplicate-analysis-card {
        grid-template-columns: 1fr;
    }

    .duplicate-candidate-grid {
        grid-template-columns: 1fr;
    }
}

/* --------------------------------------------------------------------------
   Page de presentation de l'application RoadCache
   -------------------------------------------------------------------------- */
.application-page {
    overflow: hidden;
    padding-bottom: 72px;
}

.application-page h1,
.application-page h2,
.application-page h3,
.application-page p {
    margin-top: 0;
}

.application-page h1,
.application-page h2 {
    letter-spacing: -.035em;
}

.application-kicker {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin-bottom: 14px;
    color: var(--accent);
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.application-kicker--light {
    color: #98e4ca;
}

.application-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(360px, 520px);
    gap: clamp(44px, 7vw, 108px);
    align-items: center;
    min-height: 720px;
    padding: 72px max(32px, calc((100vw - 1240px) / 2)) 96px;
    overflow: hidden;
    background:
        radial-gradient(circle at 72% 26%, rgba(68, 177, 139, .23), transparent 34%),
        linear-gradient(135deg, #f8fcfa 0%, #eaf5f0 54%, #ddeee7 100%);
    border-bottom: 1px solid rgba(172, 199, 190, .7);
}

.application-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(22, 118, 88, .045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(22, 118, 88, .045) 1px, transparent 1px);
    background-size: 54px 54px;
    mask-image: linear-gradient(to right, #000, transparent 78%);
}

.application-hero__glow {
    position: absolute;
    top: 80px;
    right: -170px;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    background: rgba(22, 118, 88, .14);
    filter: blur(70px);
}

.application-hero__content {
    position: relative;
    z-index: 2;
    max-width: 690px;
}

.application-hero h1 {
    max-width: 760px;
    margin-bottom: 28px;
    color: #073d2c;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(52px, 6.3vw, 88px);
    line-height: .96;
}

.application-hero__lead {
    max-width: 660px;
    margin-bottom: 28px;
    color: #3c574e;
    font-size: clamp(18px, 1.7vw, 22px);
    line-height: 1.58;
}

.application-hero__actions,
.application-cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.application-hero__actions .button {
    min-width: 176px;
}

.application-hero__benefits {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 22px;
    margin: 26px 0 0;
    padding: 0;
    list-style: none;
    color: #365349;
    font-size: 14px;
    font-weight: 800;
}

.application-hero__benefits li {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.application-hero__benefits li span {
    display: grid;
    place-items: center;
    width: 21px;
    height: 21px;
    border-radius: 50%;
    background: #d9efe7;
    color: var(--accent-strong);
}

.application-hero__visual {
    position: relative;
    z-index: 2;
    display: grid;
    place-items: center;
    min-height: 590px;
}

.application-phone {
    position: relative;
    width: min(330px, 78vw);
    height: 600px;
    overflow: hidden;
    border: 10px solid #14251f;
    border-radius: 44px;
    background: #14251f;
    box-shadow: 0 38px 90px rgba(17, 61, 47, .28);
    transform: rotate(2deg);
}

.application-phone::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: 34px;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .16);
}

.application-phone__speaker {
    position: absolute;
    z-index: 3;
    top: 8px;
    left: 50%;
    width: 92px;
    height: 22px;
    border-radius: 0 0 15px 15px;
    background: #14251f;
    transform: translateX(-50%);
}

.application-phone img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    border-radius: 34px;
}

.application-phone__placeholder {
    display: grid;
    place-items: center;
    height: 100%;
    border-radius: 34px;
    background: linear-gradient(145deg, #dbece5, #f8fbfa);
    color: var(--accent-strong);
    font-weight: 900;
}

.application-floating-card {
    position: absolute;
    display: flex;
    align-items: center;
    gap: 11px;
    min-width: 238px;
    padding: 13px 15px;
    border: 1px solid rgba(201, 220, 213, .9);
    border-radius: 16px;
    background: rgba(255, 255, 255, .95);
    box-shadow: 0 18px 42px rgba(19, 64, 50, .17);
    backdrop-filter: blur(14px);
}

.application-floating-card img,
.application-floating-icon {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 42px;
    height: 42px;
    padding: 7px;
    border-radius: 12px;
    background: #e3f2ec;
    object-fit: contain;
}

.application-floating-icon {
    color: var(--accent-strong);
    font-size: 23px;
    font-weight: 900;
}

.application-floating-card span:not(.application-floating-icon) {
    display: grid;
    gap: 3px;
}

.application-floating-card strong {
    color: #143e31;
    font-size: 14px;
}

.application-floating-card small {
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}

.application-floating-card--places {
    top: 100px;
    left: -74px;
}

.application-floating-card--offline {
    right: -74px;
    bottom: 78px;
}

.application-summary {
    position: relative;
    z-index: 3;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    width: min(1240px, calc(100% - 48px));
    margin: -42px auto 0;
    overflow: hidden;
    border: 1px solid #d3e0dc;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 24px 65px rgba(20, 61, 48, .14);
}

.application-summary article {
    position: relative;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 14px;
    min-height: 210px;
    padding: 30px 26px 26px;
    border-right: 1px solid #e0e9e6;
}

.application-summary article:last-child {
    border-right: 0;
}

.application-summary__number {
    position: absolute;
    top: 13px;
    right: 16px;
    color: rgba(22, 118, 88, .16);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 34px;
    font-weight: 800;
}

.application-summary article > img {
    width: 46px;
    height: 46px;
    padding: 8px;
    border-radius: 13px;
    background: #e8f4ef;
    object-fit: contain;
}

.application-summary h2 {
    margin: 1px 0 8px;
    color: #123e31;
    font-size: 19px;
    letter-spacing: -.02em;
}

.application-summary p {
    margin-bottom: 0;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.55;
}

.application-story {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(420px, 1.08fr);
    gap: clamp(50px, 7vw, 100px);
    align-items: center;
    width: min(1200px, calc(100% - 48px));
    margin: 0 auto;
    padding: 132px 0 72px;
}

.application-story--reverse .application-story__copy {
    order: 2;
}

.application-story--reverse .application-story__media {
    order: 1;
}

.application-story__copy h2,
.application-community h2,
.application-audience h2,
.application-faq h2 {
    margin-bottom: 20px;
    color: #0c3f2f;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(38px, 4.3vw, 58px);
    line-height: 1.04;
}

.application-story__copy > p,
.application-community__heading > p,
.application-audience > div:first-child > p,
.application-faq__heading > p {
    color: #4f655e;
    font-size: 18px;
    line-height: 1.7;
}

.application-check-list {
    display: grid;
    gap: 13px;
    margin: 26px 0;
    padding: 0;
    list-style: none;
}

.application-check-list li {
    position: relative;
    padding-left: 31px;
    color: #294c41;
    font-weight: 750;
    line-height: 1.45;
}

.application-check-list li::before {
    content: "✓";
    position: absolute;
    top: 0;
    left: 0;
    display: grid;
    place-items: center;
    width: 21px;
    height: 21px;
    border-radius: 50%;
    background: #dcefe8;
    color: var(--accent-strong);
    font-size: 12px;
    font-weight: 900;
}

.application-text-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--accent-strong);
    font-weight: 900;
    text-decoration: none;
}

.application-text-link:hover span {
    transform: translateX(4px);
}

.application-text-link span {
    transition: transform .18s ease;
}

.application-story__media {
    position: relative;
}

.application-screen {
    margin: 0;
    overflow: hidden;
    border: 1px solid #d1ded9;
    border-radius: 24px;
    background: #fff;
    box-shadow: 0 28px 70px rgba(17, 61, 47, .16);
}

.application-screen img {
    display: block;
    width: 100%;
    height: auto;
}

.application-screen figcaption {
    padding: 14px 18px;
    color: #587068;
    background: #fff;
    font-size: 13px;
    font-weight: 750;
    line-height: 1.4;
}

.application-screen--raised {
    transform: rotate(-1.1deg);
}

.application-place-cloud {
    position: relative;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    width: calc(100% - 32px);
    margin: -22px auto 0;
    padding: 14px;
    border: 1px solid #d2dfda;
    border-radius: 16px;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 16px 34px rgba(18, 57, 45, .12);
}

.application-place-cloud span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 9px;
    border-radius: 999px;
    background: #edf6f2;
    color: #285144;
    font-size: 12px;
    font-weight: 850;
}

.application-place-cloud img {
    width: 22px;
    height: 22px;
    object-fit: contain;
}

.application-feature-list {
    display: grid;
    gap: 12px;
    margin-top: 28px;
}

.application-feature-list article {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 16px;
    border: 1px solid #d6e3de;
    border-radius: 15px;
    background: rgba(255, 255, 255, .82);
}

.application-feature-list article > span {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: #dbefe7;
    color: var(--accent-strong);
    font-size: 18px;
    font-weight: 900;
}

.application-feature-list strong {
    display: block;
    margin-bottom: 4px;
    color: #164536;
}

.application-feature-list p {
    margin-bottom: 0;
    color: var(--muted);
    font-size: 14px;
    line-height: 1.45;
}

.application-driving-section {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(390px, .95fr);
    gap: clamp(50px, 7vw, 100px);
    align-items: center;
    width: min(1240px, calc(100% - 48px));
    min-height: 580px;
    margin: 86px auto 0;
    padding: clamp(44px, 6vw, 76px);
    overflow: hidden;
    border-radius: 34px;
    background:
        radial-gradient(circle at 80% 20%, rgba(62, 173, 134, .26), transparent 32%),
        linear-gradient(135deg, #0d3128, #124b3a 58%, #0d3b2f);
    box-shadow: 0 34px 80px rgba(10, 51, 38, .23);
    color: #fff;
}

.application-driving-section::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 1px);
    background-size: 42px 42px;
}

.application-driving-section__copy,
.application-driving-section__visual {
    position: relative;
    z-index: 2;
}

.application-driving-section h2 {
    margin-bottom: 22px;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(40px, 4.6vw, 62px);
    line-height: 1.02;
}

.application-driving-section__copy > p {
    color: #d2e7df;
    font-size: 18px;
    line-height: 1.68;
}

.application-driving-points {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 26px;
}

.application-driving-points span {
    display: grid;
    gap: 5px;
    padding: 14px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 13px;
    background: rgba(255, 255, 255, .07);
}

.application-driving-points strong {
    color: #fff;
    font-size: 14px;
}

.application-driving-points small {
    color: #bcd8ce;
    line-height: 1.35;
}

.application-driving-note {
    margin: 20px 0 0;
    padding-left: 15px;
    border-left: 3px solid #75d0af;
    font-size: 14px !important;
}

.application-driving-section__visual {
    min-height: 420px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 28px;
    background:
        radial-gradient(circle at 50% 65%, rgba(65, 167, 131, .2), transparent 30%),
        linear-gradient(145deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .015));
}

.application-road-line {
    position: absolute;
    left: 50%;
    width: 134px;
    height: 500px;
    border: 3px solid rgba(255, 255, 255, .34);
    border-top: 0;
    border-bottom: 0;
    border-radius: 50%;
    transform: translateX(-50%) rotate(18deg);
}

.application-road-line--one {
    top: -58px;
}

.application-road-line--two {
    top: -44px;
    width: 88px;
    border-color: rgba(255, 255, 255, .12);
}

.application-driving-pin {
    position: absolute;
    display: grid;
    place-items: center;
    width: 54px;
    height: 54px;
    padding: 8px;
    border: 4px solid #fff;
    border-radius: 50% 50% 50% 6px;
    background: #e4f5ee;
    box-shadow: 0 12px 28px rgba(0, 0, 0, .24);
    transform: rotate(-45deg);
}

.application-driving-pin img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    transform: rotate(45deg);
}

.application-driving-pin--one {
    top: 64px;
    left: 16%;
}

.application-driving-pin--two {
    top: 132px;
    right: 12%;
}

.application-driving-pin--three {
    right: 25%;
    bottom: 42px;
}

.application-car-marker {
    position: absolute;
    bottom: 114px;
    left: 50%;
    display: grid;
    place-items: center;
    width: 72px;
    height: 72px;
    border: 5px solid rgba(255, 255, 255, .84);
    border-radius: 50%;
    background: #1d916a;
    color: #fff;
    font-size: 37px;
    box-shadow: 0 0 0 14px rgba(85, 197, 157, .18), 0 18px 36px rgba(0, 0, 0, .23);
    transform: translateX(-50%);
}

.application-dual-features {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    width: min(1200px, calc(100% - 48px));
    margin: 112px auto 0;
}

.application-dual-card {
    position: relative;
    min-height: 440px;
    padding: clamp(34px, 5vw, 58px);
    overflow: hidden;
    border: 1px solid #d3e0dc;
    border-radius: 28px;
    background: #fff;
    box-shadow: 0 20px 52px rgba(18, 61, 47, .1);
}

.application-dual-card--offline {
    background:
        radial-gradient(circle at 88% 8%, rgba(39, 111, 191, .14), transparent 30%),
        linear-gradient(145deg, #f8fbff, #edf5fb);
}

.application-dual-card--journal {
    background:
        radial-gradient(circle at 92% 8%, rgba(22, 118, 88, .15), transparent 31%),
        linear-gradient(145deg, #fbfdfa, #ecf6f1);
}

.application-dual-card h2 {
    max-width: 520px;
    margin-bottom: 17px;
    color: #0d3e30;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(31px, 3.4vw, 45px);
    line-height: 1.06;
}

.application-dual-card > p {
    max-width: 540px;
    color: #526a62;
    font-size: 17px;
    line-height: 1.65;
}

.application-dual-card ul {
    display: grid;
    gap: 10px;
    margin: 24px 0 0;
    padding: 0;
    list-style: none;
    color: #315448;
    font-weight: 750;
}

.application-dual-card li {
    position: relative;
    padding-left: 24px;
}

.application-dual-card li::before {
    content: "•";
    position: absolute;
    left: 6px;
    color: var(--accent);
}

.application-dual-card__icon,
.application-dual-card__image {
    display: grid;
    place-items: center;
    width: 70px;
    height: 70px;
    margin-bottom: 28px;
    padding: 14px;
    border-radius: 20px;
    background: rgba(255, 255, 255, .88);
    box-shadow: 0 15px 34px rgba(18, 61, 47, .12);
    color: var(--blue);
    font-size: 38px;
    font-weight: 900;
    object-fit: contain;
}

.application-community {
    width: min(1200px, calc(100% - 48px));
    margin: 126px auto 0;
}

.application-community__heading {
    max-width: 820px;
}

.application-community__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin-top: 44px;
}

.application-community__grid article {
    min-height: 210px;
    padding: 26px;
    border: 1px solid #d3e0dc;
    border-radius: 20px;
    background: rgba(255, 255, 255, .88);
    box-shadow: 0 14px 36px rgba(18, 61, 47, .08);
}

.application-community__grid article > span {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    margin-bottom: 30px;
    border-radius: 14px;
    background: #ddf0e9;
    color: var(--accent-strong);
    font-size: 22px;
    font-weight: 900;
}

.application-community__grid h3 {
    margin-bottom: 9px;
    color: #143f32;
    font-size: 21px;
}

.application-community__grid p {
    margin-bottom: 0;
    color: var(--muted);
    line-height: 1.55;
}

.application-audience {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(430px, .9fr);
    gap: 70px;
    align-items: center;
    width: min(1200px, calc(100% - 48px));
    margin: 126px auto 0;
    padding: 54px;
    border: 1px solid #d3e0dc;
    border-radius: 28px;
    background: #fff;
    box-shadow: 0 20px 54px rgba(18, 61, 47, .1);
}

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

.application-audience__tags span {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 76px;
    padding: 15px;
    border-radius: 16px;
    background: #edf6f2;
    color: #1e4a3c;
    font-weight: 850;
}

.application-audience__tags img {
    width: 43px;
    height: 43px;
    padding: 8px;
    border-radius: 12px;
    background: #fff;
    object-fit: contain;
}

.application-faq {
    display: grid;
    grid-template-columns: minmax(0, .75fr) minmax(500px, 1.25fr);
    gap: 70px;
    width: min(1200px, calc(100% - 48px));
    margin: 126px auto 0;
}

.application-faq__list {
    display: grid;
    gap: 12px;
}

.application-faq details {
    border: 1px solid #d3e0dc;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 10px 28px rgba(18, 61, 47, .07);
}

.application-faq summary {
    position: relative;
    padding: 20px 54px 20px 21px;
    color: #164435;
    font-weight: 900;
    cursor: pointer;
    list-style: none;
}

.application-faq summary::-webkit-details-marker {
    display: none;
}

.application-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 21px;
    color: var(--accent);
    font-size: 25px;
    transform: translateY(-50%);
}

.application-faq details[open] summary::after {
    content: "−";
}

.application-faq details p {
    margin: 0;
    padding: 0 21px 21px;
    color: #596f67;
    line-height: 1.62;
}

.application-cta {
    display: flex;
    gap: 40px;
    align-items: center;
    justify-content: space-between;
    width: min(1200px, calc(100% - 48px));
    margin: 126px auto 0;
    padding: clamp(38px, 6vw, 68px);
    border-radius: 30px;
    background: linear-gradient(135deg, #0d3429, #116149);
    box-shadow: 0 28px 70px rgba(13, 61, 46, .23);
    color: #fff;
}

.application-cta h2 {
    margin-bottom: 12px;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(36px, 4.3vw, 54px);
    line-height: 1.04;
}

.application-cta p {
    max-width: 680px;
    margin-bottom: 0;
    color: #cfe4dc;
    font-size: 17px;
    line-height: 1.6;
}

.application-cta__actions {
    flex: 0 0 auto;
}

.application-cta__primary {
    border-color: #8fdfc1;
    background: #fff;
    color: #0d4f3b;
    box-shadow: 0 12px 28px rgba(0, 0, 0, .15);
}

@media (max-width: 1120px) {
    .application-hero {
        grid-template-columns: minmax(0, 1fr) minmax(310px, 400px);
        gap: 42px;
        padding-right: 44px;
        padding-left: 44px;
    }

    .application-floating-card--places {
        left: -34px;
    }

    .application-floating-card--offline {
        right: -28px;
    }

    .application-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .application-summary article:nth-child(2) {
        border-right: 0;
    }

    .application-summary article:nth-child(-n+2) {
        border-bottom: 1px solid #e0e9e6;
    }

    .application-story,
    .application-driving-section,
    .application-audience,
    .application-faq {
        grid-template-columns: 1fr;
    }

    .application-story--reverse .application-story__copy,
    .application-story--reverse .application-story__media {
        order: initial;
    }

    .application-driving-section__visual {
        width: min(620px, 100%);
        margin: 0 auto;
    }

    .application-audience,
    .application-faq {
        gap: 38px;
    }

    .application-community__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 820px) {
    .application-hero {
        grid-template-columns: 1fr;
        min-height: auto;
        padding: 58px 24px 92px;
        text-align: center;
    }

    .application-hero__content {
        margin: 0 auto;
    }

    .application-kicker,
    .application-hero__actions,
    .application-hero__benefits {
        justify-content: center;
        margin-right: auto;
        margin-left: auto;
    }

    .application-hero__lead {
        margin-right: auto;
        margin-left: auto;
    }

    .application-hero__visual {
        min-height: 570px;
    }

    .application-floating-card--places {
        top: 80px;
        left: 0;
    }

    .application-floating-card--offline {
        right: 0;
        bottom: 72px;
    }

    .application-story {
        width: min(100% - 32px, 720px);
        padding-top: 96px;
    }

    .application-story__copy,
    .application-community__heading,
    .application-audience > div:first-child,
    .application-faq__heading {
        text-align: center;
    }

    .application-story__copy .application-kicker,
    .application-community__heading .application-kicker,
    .application-audience .application-kicker,
    .application-faq .application-kicker {
        justify-content: center;
        margin-right: auto;
        margin-left: auto;
    }

    .application-check-list,
    .application-feature-list {
        text-align: left;
    }

    .application-driving-section,
    .application-community,
    .application-audience,
    .application-faq,
    .application-cta,
    .application-dual-features {
        width: min(100% - 32px, 720px);
    }

    .application-driving-points {
        grid-template-columns: 1fr;
    }

    .application-dual-features {
        grid-template-columns: 1fr;
    }

    .application-audience {
        padding: 36px 28px;
    }

    .application-cta {
        display: grid;
        justify-items: center;
        text-align: center;
    }
}

@media (max-width: 620px) {
    .application-page {
        padding-bottom: 42px;
    }

    .application-hero h1 {
        font-size: clamp(45px, 14vw, 64px);
    }

    .application-hero__lead {
        font-size: 17px;
    }

    .application-hero__actions,
    .application-cta__actions {
        display: grid;
        width: 100%;
    }

    .application-hero__actions .button,
    .application-cta__actions .button {
        width: 100%;
    }

    .application-hero__benefits {
        display: grid;
        justify-items: start;
        width: fit-content;
        text-align: left;
    }

    .application-phone {
        width: 270px;
        height: 500px;
    }

    .application-hero__visual {
        min-height: 530px;
    }

    .application-floating-card {
        min-width: 202px;
        max-width: 220px;
        padding: 10px;
    }

    .application-floating-card--places {
        top: 62px;
        left: -10px;
    }

    .application-floating-card--offline {
        right: -10px;
        bottom: 38px;
    }

    .application-summary {
        grid-template-columns: 1fr;
        width: calc(100% - 32px);
        margin-top: -32px;
    }

    .application-summary article {
        min-height: auto;
        border-right: 0;
        border-bottom: 1px solid #e0e9e6;
    }

    .application-summary article:nth-child(2) {
        border-bottom: 1px solid #e0e9e6;
    }

    .application-summary article:last-child {
        border-bottom: 0;
    }

    .application-story,
    .application-community,
    .application-audience,
    .application-faq,
    .application-driving-section,
    .application-dual-features,
    .application-cta {
        width: calc(100% - 24px);
    }

    .application-story {
        gap: 38px;
        padding-top: 82px;
    }

    .application-story__copy h2,
    .application-community h2,
    .application-audience h2,
    .application-faq h2 {
        font-size: clamp(34px, 10vw, 45px);
    }

    .application-place-cloud {
        width: calc(100% - 12px);
    }

    .application-driving-section {
        margin-top: 64px;
        padding: 34px 22px;
        border-radius: 22px;
    }

    .application-driving-section h2 {
        font-size: 40px;
    }

    .application-driving-section__visual {
        min-height: 360px;
    }

    .application-dual-features,
    .application-community,
    .application-audience,
    .application-faq,
    .application-cta {
        margin-top: 82px;
    }

    .application-dual-card {
        min-height: auto;
        padding: 34px 25px;
        border-radius: 22px;
    }

    .application-community__grid,
    .application-audience__tags {
        grid-template-columns: 1fr;
    }

    .application-audience {
        padding: 32px 22px;
        border-radius: 22px;
    }

    .application-faq {
        gap: 28px;
    }

    .application-cta {
        padding: 36px 22px;
        border-radius: 22px;
    }
}

/* Autour : zones anonymisees de 200 m et regroupement selon le zoom */
.nearby-contact-leaflet-pin {
    background: transparent;
    border: 0;
}

.nearby-contact-leaflet-pin .nearby-contact-visual {
    min-width: 26px;
    width: 26px;
    height: 26px;
    padding: 0 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #fff;
    border-radius: 999px;
    background: #137c59;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1;
    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.25);
}

.nearby-contact-leaflet-pin.is-cluster .nearby-contact-visual {
    min-width: 34px;
    width: auto;
    height: 34px;
    font-size: 0.84rem;
    border-width: 3px;
}

.nearby-contact-leaflet-pin.is-self .nearby-contact-visual {
    min-width: 32px;
    width: 32px;
    height: 32px;
    background: #0b5c43;
    font-size: 0.68rem;
}

.nearby-zone-list {
    min-width: 250px;
}

.nearby-zone-list > summary {
    cursor: pointer;
    font-weight: 800;
    color: #0b5c43;
    padding: 2px 0 8px;
}

.nearby-zone-list-body {
    display: grid;
    gap: 8px;
    max-height: 300px;
    overflow: auto;
    padding-right: 3px;
}

.nearby-zone-person {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px;
    border-radius: 10px;
    background: #f3f7f5;
}

.nearby-zone-person > div {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.nearby-zone-person span,
.nearby-zone-person small {
    color: #5c6c64;
}

.nearby-zone-person .button,
.nearby-zone-request {
    flex: 0 0 auto;
    margin: 0;
}

.nearby-zone-action {
    flex: 0 0 auto;
    padding: 7px 9px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    background: #e6ece9;
    color: #4c5b54;
}

.nearby-zone-action.is-blocked {
    background: #f7e5e2;
    color: #9f2c20;
}

/* Editeur de messages commun : privé, groupes et canaux */
.message-rich-composer {
    display: grid;
    gap: .65rem;
    margin-top: .35rem;
    position: relative;
}
.message-composer-toolbar {
    display: flex;
    align-items: center;
    gap: .55rem;
}
.message-composer-circle {
    width: 44px;
    height: 44px;
    min-width: 44px;
    border-radius: 999px;
    border: 1px solid rgba(19, 124, 89, .24);
    background: #f7f8f4;
    color: #17372d;
    display: inline-grid;
    place-items: center;
    font-size: 1.35rem;
    font-weight: 900;
    cursor: pointer;
    padding: 0;
}
.message-composer-circle:hover,
.message-composer-circle:focus-visible {
    background: #e9f3ee;
    border-color: #137c59;
}
.message-composer-menu {
    position: relative;
}
.message-composer-menu > summary {
    list-style: none;
}
.message-composer-menu > summary::-webkit-details-marker { display: none; }
.message-composer-options {
    position: absolute;
    z-index: 35;
    left: 0;
    bottom: calc(100% + 10px);
    width: min(330px, calc(100vw - 44px));
    padding: .7rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
    border: 1px solid rgba(19, 124, 89, .18);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 18px 42px rgba(23, 55, 45, .18);
}
.message-composer-options button {
    border: 0;
    border-radius: 14px;
    background: #f4f7f4;
    color: #17372d;
    padding: .75rem .7rem;
    display: flex;
    align-items: center;
    gap: .55rem;
    text-align: left;
    cursor: pointer;
}
.message-composer-options button:hover,
.message-composer-options button:focus-visible { background: #e7f2ed; }
.message-composer-options span { font-size: 1.25rem; }
.message-composer-panel {
    border: 1px solid rgba(19, 124, 89, .18);
    border-radius: 16px;
    background: #f7f8f4;
    padding: .85rem;
    display: grid;
    gap: .65rem;
}
.message-composer-panel[hidden] { display: none !important; }
.message-composer-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.message-composer-panel-head button {
    border: 0;
    background: transparent;
    color: #5c6c64;
    font-size: 1.1rem;
    cursor: pointer;
}
.message-event-grid {
    display: grid;
    gap: .65rem;
}
.message-emoji-picker {
    position: absolute;
    z-index: 40;
    left: 0;
    bottom: calc(100% + 10px);
    width: min(620px, calc(100vw - 36px));
    max-height: min(520px, 70vh);
    overflow: hidden;
    border-radius: 20px;
    border: 1px solid rgba(19, 124, 89, .18);
    background: #fff;
    box-shadow: 0 22px 48px rgba(23, 55, 45, .22);
    padding: .85rem;
}
.message-emoji-picker[hidden] { display: none !important; }
.message-emoji-search {
    display: flex;
    align-items: center;
    gap: .5rem;
    border: 1px solid #cbd6d1;
    border-radius: 999px;
    padding: .2rem .75rem;
    background: #fafbf9;
}
.message-emoji-search input {
    border: 0;
    box-shadow: none;
    background: transparent;
    padding: .65rem 0;
    width: 100%;
}
.message-emoji-tabs {
    display: flex;
    gap: .25rem;
    overflow-x: auto;
    padding: .7rem 0 .45rem;
}
.message-emoji-tabs button {
    border: 0;
    border-bottom: 3px solid transparent;
    background: transparent;
    font-size: 1.15rem;
    padding: .35rem .55rem;
    cursor: pointer;
}
.message-emoji-tabs button.is-active { border-bottom-color: #137c59; }
.message-emoji-grid {
    display: grid;
    grid-template-columns: repeat(9, minmax(34px, 1fr));
    gap: .22rem;
    max-height: 340px;
    overflow-y: auto;
    padding-right: .2rem;
}
.message-emoji-grid button {
    border: 0;
    background: transparent;
    border-radius: 10px;
    font-size: 1.55rem;
    min-height: 40px;
    cursor: pointer;
}
.message-emoji-grid button:hover,
.message-emoji-grid button:focus-visible { background: #eef5f1; }
.message-attachment-photo { margin-top: .75rem; }
.message-attachment-photo img {
    max-height: 420px;
    width: auto;
    max-width: 100%;
    border-radius: 16px;
    object-fit: contain;
}
.message-attachment-location,
.message-attachment-poll,
.message-attachment-audio,
.message-attachment-event { margin-top: .75rem; }
.message-attachment-audio,
.message-attachment-event {
    border-radius: 16px;
    background: #eaf5ef;
    padding: .75rem;
    display: grid;
    gap: .5rem;
}
.message-attachment-audio > div,
.message-attachment-event {
    display: flex;
    align-items: center;
    gap: .65rem;
}
.message-attachment-audio audio { width: 100%; }
.message-attachment-event > div:not(.message-event-icon) {
    display: grid;
    gap: .12rem;
}
.message-event-icon {
    width: 44px;
    height: 44px;
    min-width: 44px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    background: #fff;
    font-size: 1.35rem;
}
.notification-card.is-sent .message-attachment-location,
.notification-card.is-sent .message-attachment-poll,
.notification-card.is-sent .message-attachment-audio,
.notification-card.is-sent .message-attachment-event { background: rgba(255,255,255,.68); }
@media (min-width: 720px) {
    .message-event-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .message-composer-options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
    .message-emoji-grid { grid-template-columns: repeat(7, minmax(34px, 1fr)); }
}

.nearby-broadcast-form {
    border: 1px solid rgba(19, 124, 89, .2);
    border-radius: 10px;
    padding: 12px;
    background: linear-gradient(145deg, #fbfdfc, #f4f8f5);
}

.nearby-broadcast-form[data-delivery-type="alert"] {
    border-color: rgba(196, 73, 45, .35);
    background: linear-gradient(145deg, #fff9f6, #fff1eb);
}

.nearby-compact-form select {
    width: 100%;
}

.nearby-delivery-type-label select {
    min-height: 46px;
    border: 2px solid rgba(19, 124, 89, .32);
    border-radius: 9px;
    background: #fff;
    color: #173f32;
    font-weight: 900;
}

.nearby-broadcast-form[data-delivery-type="alert"] .nearby-delivery-type-label select {
    border-color: rgba(196, 73, 45, .48);
    color: #8c2f1c;
}

.nearby-delivery-explanation {
    padding: 9px 11px;
    border-radius: 8px;
    background: #eaf5ef;
    color: #315b49;
    font-size: .92rem;
    font-weight: 800;
    line-height: 1.4;
}

.nearby-delivery-explanation.is-alert {
    background: #ffebe4;
    color: #8c2f1c;
}

/* Centre d'aide RoadCache */
.help-center-page,.help-article-page{display:grid;gap:26px}.help-center-hero,.help-article-hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:28px;align-items:center;padding:34px;border-radius:28px;background:linear-gradient(135deg,#edf8f3,#fff7e9);border:1px solid #d8e9e1}.help-center-hero h1,.help-article-hero h1{margin:.25rem 0 .65rem;font-size:clamp(2rem,4vw,3.5rem)}.help-search{background:#fff;padding:20px;border-radius:20px;box-shadow:0 12px 30px rgba(23,56,45,.08)}.help-search label{display:block;font-weight:800;margin-bottom:8px}.help-search>div{display:flex;gap:10px}.help-search input{min-width:0;flex:1}.help-search p{margin:10px 0 0}.help-category-nav{display:flex;gap:10px;overflow:auto;padding:4px 0 10px}.help-category-nav a{display:flex;gap:8px;align-items:center;white-space:nowrap;padding:10px 14px;border-radius:999px;background:#fff;border:1px solid #d9e7e1;text-decoration:none;font-weight:750}.help-category-nav span,.help-category-heading>span,.help-article-number{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#137c59;color:#fff;font-weight:900}.help-category-section{display:grid;gap:16px;scroll-margin-top:90px}.help-category-heading{display:flex;align-items:center;gap:13px}.help-category-heading h2,.help-category-heading p{margin:0}.help-article-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.help-article-card{display:flex;flex-direction:column;gap:10px;min-height:185px;padding:20px;border-radius:20px;background:#fff;border:1px solid #dbe7e2;box-shadow:0 8px 24px rgba(23,56,45,.05)}.help-article-card h3,.help-article-card p{margin:0}.help-article-card h3 a{text-decoration:none}.help-card-link{margin-top:auto;font-weight:850;text-decoration:none}.help-support-strip{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;padding:26px;border-radius:24px;background:#17382f;color:#fff}.help-support-strip h2,.help-support-strip p{margin:.2rem 0}.help-support-strip small{grid-column:1/-1}.help-breadcrumb{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.94rem}.help-breadcrumb a{text-decoration:none}.help-article-hero{grid-template-columns:auto 1fr}.help-article-number{width:70px;height:70px;border-radius:22px;font-size:1.35rem}.help-article-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:24px;align-items:start}.help-article-content{display:grid;gap:20px;padding:28px;border-radius:24px;background:#fff;border:1px solid #dbe7e2}.help-article-content>p{font-size:1.08rem;line-height:1.72;margin:0}.help-steps ol{display:grid;gap:12px;padding:0;list-style:none}.help-steps li{display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:start;padding:14px;border-radius:16px;background:#f4f8f6}.help-steps li span{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#137c59;color:#fff;font-weight:900}.help-steps li p{margin:5px 0 0}.help-troubleshooting details{padding:14px 0;border-top:1px solid #dbe7e2}.help-troubleshooting summary{cursor:pointer;font-weight:850}.help-troubleshooting details p{margin:.65rem 0 0}.help-article-aside{position:sticky;top:90px;display:grid;gap:14px}.help-article-aside>div{display:grid;gap:12px;padding:20px;border-radius:20px;background:#f1f8f5}.help-article-aside a{text-decoration:none}.help-related{display:grid;gap:14px}.help-empty{text-align:center}.admin-help-layout{align-items:start}.admin-help-list{display:grid;gap:10px}.admin-help-list article{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px;border-radius:14px;background:#f7faf8;border:1px solid #dbe7e2}.admin-help-list article>div:first-child{display:grid;gap:4px}.admin-help-list small{color:#60706b}.admin-help-editor form{display:grid;gap:13px}.admin-help-editor label{display:grid;gap:6px;font-weight:750}.admin-help-editor textarea{resize:vertical}.admin-help-danger-zone{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:18px;border-top:1px solid #ead8d8}.section-title-row{display:flex;justify-content:space-between;gap:15px;align-items:center}.button.danger{background:#a92727;color:#fff}.notice.danger{padding:14px;border-radius:14px;background:#fff0f0;border:1px solid #e9bcbc;color:#7e1f1f}
@media(max-width:900px){.help-center-hero,.help-article-layout{grid-template-columns:1fr}.help-article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.help-article-aside{position:static}.help-support-strip{grid-template-columns:1fr}.help-support-strip small{grid-column:auto}.admin-help-layout{grid-template-columns:1fr}}
@media(max-width:620px){.help-center-hero,.help-article-hero{padding:22px}.help-search>div{flex-direction:column}.help-article-grid{grid-template-columns:1fr}.help-support-strip{padding:20px}.help-article-content{padding:20px}.admin-help-list article,.section-title-row{align-items:stretch;flex-direction:column}.admin-help-list .actions{display:flex;flex-wrap:wrap}}

/* Flux temps reel leger RoadCache (sans dependance Firebase) */
.roadcache-live-center{position:fixed;right:18px;bottom:18px;z-index:1200;display:grid;justify-items:end;gap:10px}.roadcache-live-toggle{display:flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:11px 15px;background:#173f32;color:#fff;box-shadow:0 12px 35px rgba(10,45,34,.24);font-weight:850;cursor:pointer}.roadcache-live-toggle strong{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:#fff;color:#b53720;font-size:.8rem}.roadcache-live-panel{width:min(390px,calc(100vw - 24px));max-height:min(620px,calc(100vh - 100px));overflow:auto;border:1px solid #d7e6df;border-radius:20px;background:#fff;box-shadow:0 20px 55px rgba(10,45,34,.25)}.roadcache-live-head{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:16px;background:#f3f9f6;border-bottom:1px solid #deebe5}.roadcache-live-head>div{display:grid;gap:2px}.roadcache-live-head small{color:#587068}.roadcache-live-head button{border:0;background:transparent;font-size:1.6rem;line-height:1;cursor:pointer}.roadcache-live-counters{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}.roadcache-live-counter{position:relative;display:grid;gap:2px;text-align:center;padding:9px 22px 9px 9px;border:1px solid transparent;border-radius:13px;background:#edf7f2;color:inherit;text-decoration:none;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.roadcache-live-counter:hover{transform:translateY(-1px);background:#e2f3eb;border-color:#bcded0;box-shadow:0 5px 14px rgba(14,85,61,.08)}.roadcache-live-counter:focus-visible{outline:3px solid rgba(19,124,89,.24);outline-offset:2px;border-color:#66b398}.roadcache-live-counter>span{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:1.25rem;font-weight:900;color:#17805d}.roadcache-live-counters strong{font-size:1.15rem}.roadcache-live-counters small{color:#587068}.roadcache-live-items{display:grid;gap:8px;padding:0 12px 12px}.roadcache-live-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;border:1px solid #dce9e3;border-radius:14px;background:#fff}.roadcache-live-item>div{display:grid;gap:3px;min-width:0}.roadcache-live-item p,.roadcache-live-item small{margin:0}.roadcache-live-item p{font-size:.92rem;line-height:1.35;color:#314f45}.roadcache-live-item small{font-size:.76rem;color:#6e817b}.roadcache-live-item a{align-self:center;text-decoration:none;font-weight:850}.roadcache-live-item.is-login_approval,.roadcache-live-item.is-alert{border-color:#e7c3a9;background:#fff8f2}.roadcache-live-empty{padding:16px;margin:0;color:#61766f;text-align:center}.roadcache-live-actions{position:sticky;bottom:0;display:flex;justify-content:space-between;gap:10px;padding:12px 16px;background:#fff;border-top:1px solid #deebe5}.roadcache-live-actions a,.roadcache-live-actions button{border:0;background:transparent;color:#137c59;font-weight:850;text-decoration:none;cursor:pointer}.roadcache-live-actions button[aria-busy="true"]{opacity:.55;pointer-events:none}a[data-roadcache-live-count]:not([data-roadcache-live-count="0"])::after{content:attr(data-roadcache-live-count);display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 5px;border-radius:999px;background:#b53720;color:#fff;font-size:.72rem;font-weight:900}@media(max-width:620px){.roadcache-live-center{right:12px;bottom:12px}.roadcache-live-toggle span:nth-child(2){display:none}.roadcache-live-panel{max-height:72vh}}

/* SEO public directories and accessible navigation */
.seo-breadcrumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    margin: 0 0 1rem;
    color: var(--muted, #61746d);
    font-size: .92rem;
}
.seo-breadcrumbs a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.public-directory-head { align-items: flex-start; }
.public-directory-count { margin-top: .65rem; }
.public-directory-links,
.public-directory-guide {
    margin: 1.25rem 0;
    padding: 1.2rem;
    border: 1px solid rgba(23, 53, 45, .14);
    border-radius: 18px;
    background: #fff;
}
.public-directory-links h2,
.public-directory-guide h2 { margin-top: 0; }
.public-directory-links .tags a,
.point-directory-tags a {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .55rem .75rem;
    border-radius: 999px;
    background: #eef5f1;
    color: #17352d;
    text-decoration: none;
    font-weight: 700;
}
.public-directory-links .tags a:hover,
.point-directory-tags a:hover { background: #dcebe4; }
.public-point-directory-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
}
.public-point-directory-card {
    display: grid;
    grid-template-rows: 180px 1fr;
    min-width: 0;
    overflow: hidden;
    border: 1px solid rgba(23, 53, 45, .14);
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 12px 30px rgba(23, 53, 45, .08);
}
.public-point-directory-media {
    display: grid;
    place-items: center;
    min-height: 180px;
    overflow: hidden;
    color: #fff;
    text-decoration: none;
}
.public-point-directory-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.public-point-directory-media > span {
    display: grid;
    place-items: center;
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .2);
    font-size: 1.4rem;
    font-weight: 900;
}
.public-point-directory-body {
    display: flex;
    flex-direction: column;
    gap: .65rem;
    padding: 1rem;
}
.public-point-directory-body h2 { margin: 0; font-size: 1.15rem; }
.public-point-directory-body h2 a { color: inherit; text-decoration: none; }
.public-point-directory-body p { margin: 0; }
.public-point-directory-body .button { margin-top: auto; align-self: flex-start; }
.public-directory-location { color: #536760; font-size: .92rem; }
.public-directory-location a { color: inherit; text-underline-offset: 2px; }
.public-directory-guide {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.5rem;
}
.point-seo-links { margin-top: 1rem; }
.point-directory-tags { margin-bottom: 1rem; }
.point-nearby-public-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: .75rem;
}
.point-nearby-public-grid > a {
    display: grid;
    grid-template-columns: 42px 1fr;
    grid-template-rows: auto auto;
    gap: .1rem .65rem;
    align-items: center;
    padding: .75rem;
    border: 1px solid rgba(23, 53, 45, .12);
    border-radius: 14px;
    color: inherit;
    text-decoration: none;
    background: #f8fbf9;
}
.point-nearby-public-grid > a:hover { border-color: rgba(23, 53, 45, .35); background: #eef5f1; }
.point-nearby-public-grid > a > span {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    color: #fff;
    font-size: .78rem;
    font-weight: 900;
}
.point-nearby-public-grid strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.point-nearby-public-grid small { color: #64766f; }

:focus-visible {
    outline: 3px solid #ffb84d;
    outline-offset: 3px;
}
.skip-link:focus { z-index: 10000; }

@media (max-width: 720px) {
    .public-directory-guide { align-items: stretch; flex-direction: column; }
    .public-point-directory-card { grid-template-rows: 150px 1fr; }
}

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

.operation-action-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.operation-action-buttons form {
    margin: 0;
}

button.danger-outline,
.button.danger-outline {
    border-color: #b42318;
    color: #8f1d14;
    background: #fff7f6;
}

button.danger-outline:hover,
button.danger-outline:focus-visible,
.button.danger-outline:hover,
.button.danger-outline:focus-visible {
    border-color: #8f1d14;
    color: #ffffff;
    background: #b42318;
}

/* Notifications 1.0.74 : compteurs propres a chaque filtre. */
.notification-filter-bar .chip-link{display:inline-flex;align-items:center;gap:8px}
.notification-filter-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#eef5f2;color:#173f32;font-size:.75rem;font-weight:900;line-height:1}
.notification-filter-bar .chip-link.is-active .notification-filter-count{background:#173f32;color:#fff}
.notification-card:target{outline:3px solid rgba(19,124,89,.28);outline-offset:3px}

/* Administration · surveillance HTTP 429 */
.rate-limit-page {
    --rl-green: #0f765c;
    --rl-green-dark: #0a5542;
    --rl-green-soft: #e8f7f1;
    --rl-amber: #b87308;
    --rl-amber-soft: #fff4dc;
    --rl-red: #b83b35;
    --rl-red-soft: #fff0ef;
    --rl-border: #cfddd8;
    --rl-muted: #61736d;
    max-width: 1380px;
    padding-top: 36px;
}

.rate-limit-head {
    align-items: center;
    margin-bottom: 18px;
}

.rate-limit-head > div:first-child {
    max-width: 760px;
}

.rate-limit-head h1 {
    margin-bottom: 10px;
    font-size: clamp(2rem, 4vw, 3.5rem);
}

.rate-limit-head p:last-child {
    max-width: 720px;
    margin-bottom: 0;
    line-height: 1.55;
}

.rate-limit-head-actions {
    align-items: center;
}

.rate-limit-export-menu {
    position: relative;
}

.rate-limit-export-menu > summary {
    list-style: none;
    cursor: pointer;
}

.rate-limit-export-menu > summary::-webkit-details-marker {
    display: none;
}

.rate-limit-export-menu[open] > summary {
    border-color: var(--accent);
}

.rate-limit-export-menu > div {
    position: absolute;
    z-index: 40;
    top: calc(100% + 7px);
    right: 0;
    display: grid;
    min-width: 140px;
    overflow: hidden;
    border: 1px solid var(--rl-border);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 16px 36px rgba(25, 62, 52, .14);
}

.rate-limit-export-menu a {
    padding: 10px 13px;
    color: var(--ink);
    font-weight: 800;
    text-decoration: none;
}

.rate-limit-export-menu a:hover,
.rate-limit-export-menu a:focus-visible {
    background: #edf6f2;
    color: var(--accent);
}

.rate-limit-status {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 14px;
    align-items: center;
    margin-bottom: 16px;
    padding: 16px 18px;
    border: 1px solid var(--rl-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .06);
}

.rate-limit-status.status-ok {
    border-color: #b9ddcf;
    background: linear-gradient(100deg, #f1fbf7, #fff 58%);
}

.rate-limit-status.status-warning {
    border-color: #ecd19d;
    background: linear-gradient(100deg, var(--rl-amber-soft), #fff 58%);
}

.rate-limit-status.status-critical {
    border-color: #e7b7b3;
    background: linear-gradient(100deg, var(--rl-red-soft), #fff 58%);
}

.rate-limit-status-icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--rl-green);
    color: #fff;
    font-size: 1.25rem;
    font-weight: 950;
}

.status-warning .rate-limit-status-icon { background: var(--rl-amber); }
.status-critical .rate-limit-status-icon { background: var(--rl-red); }

.rate-limit-status-title-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.rate-limit-status-title-row strong {
    color: #102d25;
    font-size: 1.05rem;
}

.rate-limit-status p {
    margin: 4px 0 3px;
    color: #405750;
}

.rate-limit-status small {
    color: var(--rl-muted);
}

.rate-limit-status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 9px;
    border-radius: 999px;
    background: #dff5eb;
    color: #086347;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .04em;
}

.status-warning .rate-limit-status-badge { background: #ffe7b8; color: #795000; }
.status-critical .rate-limit-status-badge { background: #ffd9d6; color: #922a24; }

.rate-limit-filter-card {
    display: grid;
    grid-template-columns: minmax(150px, .7fr) minmax(170px, .85fr) minmax(280px, 1.5fr) auto;
    gap: 12px;
    align-items: end;
    margin-bottom: 16px;
    padding: 15px;
    border: 1px solid var(--rl-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .05);
}

.rate-limit-filter-card label {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.rate-limit-filter-card label > span {
    color: #415b53;
    font-size: .82rem;
    font-weight: 900;
}

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

.rate-limit-filter-actions .button {
    min-height: 44px;
    white-space: nowrap;
}

.rate-limit-kpi-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin: 0 0 18px;
}

.rate-limit-kpi {
    position: relative;
    display: grid;
    align-content: start;
    min-height: 138px;
    overflow: hidden;
    padding: 17px;
    border: 1px solid var(--rl-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .06);
}

.rate-limit-kpi::before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 4px;
    content: '';
    background: #aec2bb;
}

.rate-limit-kpi.is-ok::before { background: var(--rl-green); }
.rate-limit-kpi.is-alert::before { background: var(--rl-amber); }
.status-critical ~ .rate-limit-filter-card + .rate-limit-kpi-grid .rate-limit-kpi.is-alert::before { background: var(--rl-red); }

.rate-limit-kpi > span {
    color: #536962;
    font-size: .86rem;
    font-weight: 850;
}

.rate-limit-kpi > strong {
    display: block;
    margin: 11px 0 8px;
    color: #102d25;
    font-size: clamp(2rem, 3vw, 2.7rem);
    line-height: .95;
    overflow-wrap: anywhere;
}

.rate-limit-kpi > strong em {
    margin-left: 2px;
    color: #536962;
    font-size: .92rem;
    font-style: normal;
    font-weight: 850;
}

.rate-limit-kpi .rate-limit-kpi-storage {
    font-size: clamp(1.55rem, 2.5vw, 2.25rem);
}

.rate-limit-kpi small {
    margin-top: auto;
    color: #71827d;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rate-limit-empty-state {
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    margin-bottom: 18px;
    padding: 22px;
    border: 1px solid #b9ddcf;
    border-radius: 18px;
    background: linear-gradient(135deg, #edf9f4, #fff);
}

.rate-limit-empty-icon {
    display: grid;
    place-items: center;
    width: 56px;
    height: 56px;
    border-radius: 18px;
    background: var(--rl-green);
    color: #fff;
    font-size: 1.7rem;
    font-weight: 950;
}

.rate-limit-empty-state h2 {
    margin: 2px 0 7px;
    font-size: clamp(1.35rem, 2vw, 1.8rem);
}

.rate-limit-empty-state p {
    max-width: 820px;
    margin: 0;
    color: #526862;
}

.rate-limit-empty-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 15px;
}

.rate-limit-info-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(300px, .75fr);
    gap: 14px;
    margin-bottom: 18px;
}

.rate-limit-panel,
.rate-limit-table-card {
    border: 1px solid var(--rl-border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 8px 28px rgba(25, 62, 52, .06);
}

.rate-limit-panel {
    padding: 20px;
}

.rate-limit-panel .eyebrow,
.rate-limit-section-heading .eyebrow {
    margin: 0 0 4px;
    color: var(--rl-green);
}

.rate-limit-panel h2,
.rate-limit-section-heading h2 {
    margin: 0;
    font-size: clamp(1.35rem, 2.1vw, 1.85rem);
}

.rate-limit-recommendations {
    display: grid;
    gap: 10px;
    margin: 16px 0 0;
    padding: 0;
    list-style: none;
}

.rate-limit-recommendations li {
    position: relative;
    padding: 12px 13px 12px 40px;
    border-radius: 12px;
    background: #f3f8f6;
    color: #314a43;
    line-height: 1.45;
}

.rate-limit-recommendations li::before {
    position: absolute;
    top: 12px;
    left: 13px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    content: 'i';
    background: #d9eee6;
    color: var(--rl-green-dark);
    font-size: .76rem;
    font-weight: 950;
}

.rate-limit-privacy-panel dl {
    display: grid;
    gap: 0;
    margin: 14px 0 0;
}

.rate-limit-privacy-panel dl > div {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 14px;
    align-items: center;
    padding: 10px 0;
    border-top: 1px solid #e6eeeb;
}

.rate-limit-privacy-panel dl > div:first-child { border-top: 0; }
.rate-limit-privacy-panel dt { color: #5c7069; font-weight: 800; }
.rate-limit-privacy-panel dd { margin: 0; color: #17382f; font-weight: 900; text-align: right; }

.rate-limit-table-card {
    margin-bottom: 18px;
    overflow: hidden;
}

.rate-limit-section-heading {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: start;
    padding: 20px 20px 16px;
}

.rate-limit-section-heading p:last-child {
    max-width: 820px;
    margin: 7px 0 0;
    color: var(--rl-muted);
}

.rate-limit-count-chip {
    flex: 0 0 auto;
    padding: 6px 10px;
    border-radius: 999px;
    background: #edf5f2;
    color: #315149;
    font-size: .78rem;
    font-weight: 900;
}

.rate-limit-table-wrap {
    width: 100%;
    overflow: auto;
    border-top: 1px solid #e2ebe8;
}

.rate-limit-table {
    width: 100%;
    min-width: 1160px;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    font-size: .88rem;
}

.rate-limit-latest-table { min-width: 980px; }

.rate-limit-table th,
.rate-limit-table td {
    padding: 11px 12px;
    border-bottom: 1px solid #e7efec;
    text-align: left;
    vertical-align: top;
}

.rate-limit-table thead th {
    position: sticky;
    z-index: 2;
    top: 0;
    background: #f2f7f5;
    color: #38534b;
    font-size: .73rem;
    font-weight: 950;
    letter-spacing: .02em;
    text-transform: uppercase;
    white-space: nowrap;
}

.rate-limit-table tbody tr:hover td {
    background: #f8fbfa;
}

.rate-limit-table tbody tr:last-child td { border-bottom: 0; }
.rate-limit-table code { color: #17382f; font-size: .82rem; }
.rate-limit-rule { white-space: normal; overflow-wrap: anywhere; }
.rate-limit-diagnostic { min-width: 220px; color: #405850; line-height: 1.4; }

.rate-limit-origin {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #edf2f0;
    color: #435a53;
    font-size: .73rem;
    font-weight: 900;
    white-space: nowrap;
}

.rate-limit-origin.origin-android { background: #e5f4ff; color: #1d5f8b; }
.rate-limit-origin.origin-api { background: #eee9ff; color: #5b4298; }
.rate-limit-origin.origin-admin { background: #fff0d9; color: #815100; }
.rate-limit-origin.origin-member { background: #e9f6ed; color: #236b43; }
.rate-limit-origin.origin-public { background: #f0f2f1; color: #53645f; }

.rate-limit-danger-zone {
    overflow: hidden;
    border: 1px solid #e6c2bf;
    border-radius: 16px;
    background: #fffafa;
}

.rate-limit-danger-zone > summary {
    padding: 15px 18px;
    cursor: pointer;
    color: #7f302b;
    font-weight: 900;
}

.rate-limit-danger-zone > div {
    padding: 0 18px 18px;
}

.rate-limit-danger-zone p {
    max-width: 850px;
    margin-top: 0;
    color: #6d514e;
}

@media (max-width: 1120px) {
    .rate-limit-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .rate-limit-filter-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rate-limit-route-filter { grid-column: 1 / -1; }
    .rate-limit-filter-actions { grid-column: 1 / -1; }
}

@media (max-width: 820px) {
    .rate-limit-page { padding-top: 26px; }
    .rate-limit-head { display: grid; align-items: start; }
    .rate-limit-head-actions { justify-content: flex-start; }
    .rate-limit-info-grid { grid-template-columns: 1fr; }
    .rate-limit-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .rate-limit-export-menu > div { right: auto; left: 0; }
}

@media (max-width: 560px) {
    .rate-limit-page { padding-right: 14px; padding-left: 14px; }
    .rate-limit-status { grid-template-columns: 38px minmax(0, 1fr); padding: 14px; }
    .rate-limit-status-icon { width: 36px; height: 36px; }
    .rate-limit-filter-card { grid-template-columns: 1fr; }
    .rate-limit-route-filter,
    .rate-limit-filter-actions { grid-column: auto; }
    .rate-limit-filter-actions .button { flex: 1 1 130px; }
    .rate-limit-kpi-grid { grid-template-columns: 1fr; }
    .rate-limit-kpi { min-height: 118px; }
    .rate-limit-empty-state { grid-template-columns: 1fr; }
    .rate-limit-section-heading { flex-direction: column; }
    .rate-limit-privacy-panel dl > div { grid-template-columns: 1fr; gap: 3px; }
    .rate-limit-privacy-panel dd { text-align: left; }
}

/* Administration · pages de supervision SQL et cache */
.monitor-page {
    --mon-green: #0f765c;
    --mon-green-dark: #0a5542;
    --mon-green-soft: #e8f7f1;
    --mon-amber: #b87308;
    --mon-amber-soft: #fff4dc;
    --mon-red: #b83b35;
    --mon-red-soft: #fff0ef;
    --mon-border: #cfddd8;
    --mon-muted: #61736d;
    max-width: 1380px;
    padding-top: 36px;
}

.monitor-head {
    align-items: center;
    margin-bottom: 18px;
}

.monitor-head > div:first-child { max-width: 780px; }
.monitor-head h1 {
    margin-bottom: 10px;
    font-size: clamp(2rem, 4vw, 3.5rem);
}
.monitor-head p:last-child {
    max-width: 740px;
    margin-bottom: 0;
    line-height: 1.55;
}
.monitor-head-actions { align-items: center; }

.monitor-export-menu { position: relative; }
.monitor-export-menu > summary {
    list-style: none;
    cursor: pointer;
}
.monitor-export-menu > summary::-webkit-details-marker { display: none; }
.monitor-export-menu[open] > summary { border-color: var(--accent); }
.monitor-export-menu > div {
    position: absolute;
    z-index: 40;
    top: calc(100% + 7px);
    right: 0;
    display: grid;
    min-width: 140px;
    overflow: hidden;
    border: 1px solid var(--mon-border);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 16px 36px rgba(25, 62, 52, .14);
}
.monitor-export-menu a {
    padding: 10px 13px;
    color: var(--ink);
    font-weight: 800;
    text-decoration: none;
}
.monitor-export-menu a:hover,
.monitor-export-menu a:focus-visible {
    background: #edf6f2;
    color: var(--accent);
}

.monitor-status {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 14px;
    align-items: center;
    margin-bottom: 16px;
    padding: 16px 18px;
    border: 1px solid var(--mon-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .06);
}
.monitor-status.status-ok {
    border-color: #b9ddcf;
    background: linear-gradient(100deg, #f1fbf7, #fff 58%);
}
.monitor-status.status-warning {
    border-color: #ecd19d;
    background: linear-gradient(100deg, var(--mon-amber-soft), #fff 58%);
}
.monitor-status.status-critical {
    border-color: #e7b7b3;
    background: linear-gradient(100deg, var(--mon-red-soft), #fff 58%);
}
.monitor-status.status-unknown {
    background: linear-gradient(100deg, #f4f7f6, #fff 58%);
}
.monitor-status-icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--mon-green);
    color: #fff;
    font-size: 1.25rem;
    font-weight: 950;
}
.monitor-status.status-warning .monitor-status-icon { background: var(--mon-amber); }
.monitor-status.status-critical .monitor-status-icon { background: var(--mon-red); }
.monitor-status.status-unknown .monitor-status-icon { background: #6c7d78; }
.monitor-status-title-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.monitor-status-title-row strong {
    color: #102d25;
    font-size: 1.05rem;
}
.monitor-status p {
    margin: 4px 0 3px;
    color: #405750;
}
.monitor-status small { color: var(--mon-muted); }
.monitor-status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 9px;
    border-radius: 999px;
    background: #dff5eb;
    color: #086347;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .04em;
}
.monitor-status.status-warning .monitor-status-badge { background: #ffe7b8; color: #795000; }
.monitor-status.status-critical .monitor-status-badge { background: #ffd9d6; color: #922a24; }
.monitor-status.status-unknown .monitor-status-badge { background: #edf1f0; color: #53645f; }

.monitor-filter-card {
    display: grid;
    gap: 12px;
    align-items: end;
    margin-bottom: 16px;
    padding: 15px;
    border: 1px solid var(--mon-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .05);
}
.monitor-filter-card-sql {
    grid-template-columns: minmax(160px, .6fr) minmax(320px, 1.6fr) auto;
}
.monitor-filter-card-cache {
    grid-template-columns: minmax(180px, 320px) auto;
    justify-content: start;
}
.monitor-filter-card label {
    display: grid;
    gap: 6px;
    min-width: 0;
}
.monitor-filter-card label > span {
    color: #415b53;
    font-size: .82rem;
    font-weight: 900;
}
.monitor-filter-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.monitor-filter-actions .button {
    min-height: 44px;
    white-space: nowrap;
}

.monitor-kpi-grid {
    display: grid;
    gap: 12px;
    margin: 0 0 18px;
}
.monitor-kpi-grid-six { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.monitor-kpi {
    position: relative;
    display: grid;
    align-content: start;
    min-height: 138px;
    overflow: hidden;
    padding: 17px;
    border: 1px solid var(--mon-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .06);
}
.monitor-kpi::before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 4px;
    content: '';
    background: #aec2bb;
}
.monitor-kpi.is-ok::before { background: var(--mon-green); }
.monitor-kpi.is-alert::before { background: var(--mon-amber); }
.monitor-status.status-critical ~ .monitor-filter-card + .monitor-kpi-grid .monitor-kpi.is-alert::before { background: var(--mon-red); }
.monitor-kpi > span {
    color: #536962;
    font-size: .86rem;
    font-weight: 850;
}
.monitor-kpi > strong {
    display: block;
    margin: 11px 0 8px;
    color: #102d25;
    font-size: clamp(1.95rem, 3vw, 2.65rem);
    line-height: .95;
    overflow-wrap: anywhere;
}
.monitor-kpi > strong em {
    margin-left: 2px;
    color: #536962;
    font-size: .92rem;
    font-style: normal;
    font-weight: 850;
}
.monitor-kpi .monitor-kpi-storage {
    font-size: clamp(1.45rem, 2.4vw, 2.15rem);
}
.monitor-kpi small {
    margin-top: auto;
    color: #71827d;
    line-height: 1.3;
}

.monitor-info-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}
.monitor-panel,
.monitor-table-card {
    border: 1px solid var(--mon-border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 8px 28px rgba(25, 62, 52, .06);
}
.monitor-panel { padding: 20px; }
.monitor-panel .eyebrow,
.monitor-section-heading .eyebrow {
    margin: 0 0 4px;
    color: var(--mon-green);
}
.monitor-panel h2,
.monitor-section-heading h2 {
    margin: 0;
    font-size: clamp(1.35rem, 2.1vw, 1.85rem);
}
.monitor-panel-note {
    margin: 14px 0 0;
    color: var(--mon-muted);
    line-height: 1.45;
}
.monitor-detail-list {
    display: grid;
    gap: 0;
    margin: 14px 0 0;
}
.monitor-detail-list > div {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) auto;
    gap: 14px;
    align-items: center;
    padding: 10px 0;
    border-top: 1px solid #e6eeeb;
}
.monitor-detail-list > div:first-child { border-top: 0; }
.monitor-detail-list dt { color: #5c7069; font-weight: 800; }
.monitor-detail-list dd { margin: 0; color: #17382f; font-weight: 900; text-align: right; }

.monitor-recommendations {
    display: grid;
    gap: 10px;
    margin: 16px 0 0;
    padding: 0;
    list-style: none;
}
.monitor-recommendations li {
    position: relative;
    padding: 12px 13px 12px 40px;
    border-radius: 12px;
    background: #f3f8f6;
    color: #314a43;
    line-height: 1.45;
}
.monitor-recommendations li::before {
    position: absolute;
    top: 12px;
    left: 13px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    content: 'i';
    background: #d9eee6;
    color: var(--mon-green-dark);
    font-size: .76rem;
    font-weight: 950;
}

.monitor-inline-alert {
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid #ecd19d;
    border-radius: 12px;
    background: var(--mon-amber-soft);
    color: #6d4b13;
    line-height: 1.45;
}
.monitor-inline-alert.is-danger {
    border-color: #e7b7b3;
    background: var(--mon-red-soft);
    color: #7f302b;
}
.monitor-state-pill,
.monitor-method {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #edf2f0;
    color: #435a53;
    font-size: .73rem;
    font-weight: 900;
    white-space: nowrap;
}
.monitor-state-pill.is-on,
.monitor-state-pill.state-ok { background: #e1f5ec; color: #126044; }
.monitor-state-pill.is-off,
.monitor-state-pill.state-critical { background: #ffe4e1; color: #8d2d27; }
.monitor-state-pill.state-warning { background: #fff0d4; color: #7a520b; }

.monitor-section-heading {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: start;
    padding: 20px 20px 16px;
}
.monitor-section-heading.compact { padding: 0; }
.monitor-section-heading p:last-child {
    max-width: 820px;
    margin: 7px 0 0;
    color: var(--mon-muted);
}
.monitor-count-chip {
    flex: 0 0 auto;
    padding: 6px 10px;
    border-radius: 999px;
    background: #edf5f2;
    color: #315149;
    font-size: .78rem;
    font-weight: 900;
}
.monitor-recommendation-stack {
    display: grid;
    gap: 10px;
    margin-top: 16px;
}
.monitor-recommendation-card {
    padding: 12px 14px;
    border: 1px solid #ecd19d;
    border-radius: 12px;
    background: #fff9ed;
}
.monitor-recommendation-card.is-danger {
    border-color: #e7b7b3;
    background: #fff5f4;
}
.monitor-recommendation-card > strong { color: #17382f; }
.monitor-recommendation-card p {
    margin: 4px 0 6px;
    color: #485e57;
    line-height: 1.4;
}
.monitor-recommendation-card small { color: #65756f; }
.monitor-empty-mini {
    padding: 14px;
    border: 1px solid #b9ddcf;
    border-radius: 12px;
    background: #f1fbf7;
    color: #176246;
    font-weight: 800;
}

.monitor-table-card {
    margin-bottom: 18px;
    overflow: hidden;
}
.monitor-table-wrap {
    width: 100%;
    overflow: auto;
    border-top: 1px solid #e2ebe8;
}
.monitor-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    font-size: .88rem;
}
.monitor-table-routes { min-width: 1080px; }
.monitor-table-queries { min-width: 1150px; }
.monitor-table-cache { min-width: 1260px; }
.monitor-table-invalidations { min-width: 720px; }
.monitor-table th,
.monitor-table td {
    padding: 11px 12px;
    border-bottom: 1px solid #e7efec;
    text-align: left;
    vertical-align: top;
}
.monitor-table thead th {
    position: sticky;
    z-index: 2;
    top: 0;
    background: #f2f7f5;
    color: #38534b;
    font-size: .73rem;
    font-weight: 950;
    letter-spacing: .02em;
    text-transform: uppercase;
    white-space: nowrap;
}
.monitor-table tbody tr:hover td { background: #f8fbfa; }
.monitor-table tbody tr:last-child td { border-bottom: 0; }
.monitor-table code {
    color: #17382f;
    font-size: .82rem;
}
.monitor-query-sql {
    min-width: 360px;
    max-width: 620px;
}
.monitor-query-sql code,
.monitor-advice {
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.42;
}
.monitor-advice { min-width: 250px; }
.monitor-empty-cell {
    padding: 24px !important;
    color: #687a74;
    text-align: center !important;
}

.monitor-danger-zone {
    overflow: hidden;
    border: 1px solid #e6c2bf;
    border-radius: 16px;
    background: #fffafa;
}
.monitor-danger-zone > summary {
    padding: 15px 18px;
    cursor: pointer;
    color: #7f302b;
    font-weight: 900;
}
.monitor-danger-zone > div { padding: 0 18px 18px; }
.monitor-danger-zone p {
    max-width: 850px;
    margin-top: 0;
    color: #6d514e;
}

@media (max-width: 1220px) {
    .monitor-kpi-grid-six { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
    .monitor-filter-card-sql { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .monitor-route-filter { grid-column: 2; }
    .monitor-filter-card-sql .monitor-filter-actions { grid-column: 1 / -1; }
    .monitor-info-grid { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    .monitor-page { padding-top: 26px; }
    .monitor-head { display: grid; align-items: start; }
    .monitor-head-actions { justify-content: flex-start; }
    .monitor-export-menu > div { right: auto; left: 0; }
    .monitor-kpi-grid-six { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
    .monitor-page { padding-right: 14px; padding-left: 14px; }
    .monitor-status { grid-template-columns: 38px minmax(0, 1fr); padding: 14px; }
    .monitor-status-icon { width: 36px; height: 36px; }
    .monitor-filter-card-sql,
    .monitor-filter-card-cache { grid-template-columns: 1fr; }
    .monitor-route-filter,
    .monitor-filter-card-sql .monitor-filter-actions { grid-column: auto; }
    .monitor-filter-actions .button { flex: 1 1 130px; }
    .monitor-kpi-grid-six { grid-template-columns: 1fr; }
    .monitor-kpi { min-height: 118px; }
    .monitor-section-heading { flex-direction: column; }
    .monitor-detail-list > div { grid-template-columns: 1fr; gap: 3px; }
    .monitor-detail-list dd { text-align: left; }
}

/* --- Workflow testeurs Google Play --- */
.tester-release-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}
.tester-release-banner > div {
    display: grid;
    gap: .25rem;
}
.tester-release-banner strong {
    font-size: 1.15rem;
}
.tester-release-banner small {
    max-width: 760px;
}
.tester-access-workflow {
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid var(--line, #d7e2de);
    border-radius: 18px;
    background: rgba(255,255,255,.65);
}
.tester-access-workflow-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: .9rem;
}
.tester-access-workflow-head h3 {
    margin: .1rem 0 0;
}
.tester-access-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .8rem;
}
.tester-access-step {
    position: relative;
    display: grid;
    grid-template-columns: 2.25rem minmax(0, 1fr);
    gap: .7rem;
    padding: .9rem;
    border: 1px solid var(--line, #d7e2de);
    border-radius: 14px;
    background: #fff;
}
.tester-access-step h4 {
    margin: 0 0 .4rem;
}
.tester-access-step p {
    margin-top: .35rem;
}
.tester-step-number {
    width: 2.25rem;
    height: 2.25rem;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    font-weight: 800;
    background: #e7f4ee;
    color: #0a654d;
}
.tester-access-step-final {
    border-color: #b9d9cb;
}
.tester-play-email {
    padding: .55rem .7rem;
    border-radius: 10px;
    background: #eef8f4;
    overflow-wrap: anywhere;
}

.tester-play-email-line {
    display: flex;
    align-items: center;
    gap: .55rem;
    flex-wrap: wrap;
}
.tester-play-email-line .tester-play-email {
    flex: 1 1 220px;
    margin: 0;
}
.tester-email-manual-form {
    align-items: end;
}
.tester-email-manual-form label {
    flex: 1 1 260px;
}
.tester-google-play-form {
    max-width: 760px;
    margin: 2rem auto;
}
.tester-google-play-note {
    margin: 1rem 0;
    padding: .9rem 1rem;
    border-radius: 12px;
    background: #eef8f4;
    border: 1px solid #cfe6dc;
}
.tester-google-play-note p {
    margin: .25rem 0 0;
}
@media (max-width: 1000px) {
    .tester-access-steps { grid-template-columns: 1fr; }
}

/* --- Cache V2 / supervision SQL enrichie --- */
.monitor-v2-overview {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(300px, .85fr);
    gap: 18px;
    margin-bottom: 18px;
}
.monitor-v2-overview .monitor-panel { margin: 0; }
.cache-v2-flow {
    display: grid;
    grid-template-columns: repeat(7, auto);
    align-items: stretch;
    gap: 8px;
    margin: 16px 0 10px;
}
.cache-v2-flow > div {
    min-width: 0;
    padding: 12px;
    border: 1px solid #d9e7e2;
    border-radius: 14px;
    background: #f8fbfa;
    display: grid;
    gap: 4px;
}
.cache-v2-flow > div strong {
    width: 28px;
    height: 28px;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    background: #e1f3eb;
    color: #126348;
}
.cache-v2-flow > div span { font-weight: 900; color: #17382f; }
.cache-v2-flow > div small { color: #63766f; line-height: 1.35; }
.cache-v2-flow > b { align-self: center; color: #89a79d; font-size: 1.2rem; }
.monitor-kpi-grid-eight {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}
.monitor-v2-versions .monitor-table { min-width: 720px; }
.monitor-manual-invalidation {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) auto;
    align-items: end;
    gap: 12px;
    padding: 16px 18px 18px;
    border-top: 1px solid #e2ebe8;
    background: #fbfdfc;
}
.monitor-manual-invalidation label { display: grid; gap: 6px; font-weight: 800; color: #355048; }
.monitor-manual-invalidation select { min-height: 42px; }
.monitor-manual-invalidation small { grid-column: 1 / -1; color: #6a7b75; }
.monitor-hotspot-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    align-items: center;
    margin-bottom: 18px;
    padding: 16px 18px;
    border: 1px solid #ead39f;
    border-radius: 16px;
    background: #fffaf0;
}
.monitor-hotspot-card.is-critical { border-color: #e4b3ae; background: #fff4f3; }
.monitor-hotspot-card h2 { margin: 2px 0 6px; }
.monitor-hotspot-card p { margin: 0; color: #52665f; }
.monitor-hotspot-metrics { display: grid; grid-template-columns: repeat(3, minmax(100px, 1fr)); gap: 8px; }
.monitor-hotspot-metrics span { display: grid; gap: 2px; padding: 10px 12px; border-radius: 12px; background: rgba(255,255,255,.8); text-align: center; }
.monitor-hotspot-metrics strong { color: #17382f; font-size: 1rem; }
.monitor-hotspot-metrics small { color: #6b7c76; }
.monitor-version-chips { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.monitor-version-chips span { padding: 5px 8px; border: 1px solid #d8e7e1; border-radius: 999px; background: #f7fbf9; font-size: .78rem; }
.monitor-sql-tag { display: inline-block; margin-top: 5px; padding: 3px 6px; border-radius: 999px; background: #edf3f1; color: #486057; font-size: .67rem; font-weight: 900; white-space: nowrap; }
.monitor-sql-tag.is-v2 { background: #e6f5ee; color: #146346; }
.monitor-sql-tag.is-warning { background: #fff1cc; color: #76520b; }
.monitor-sql-tag.is-danger { background: #fde5e2; color: #8c332c; }
.monitor-row-warning td { background: #fffdf7; }
.monitor-row-critical td { background: #fff8f7; }

@media (max-width: 1220px) {
    .monitor-kpi-grid-eight { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .cache-v2-flow { grid-template-columns: 1fr; }
    .cache-v2-flow > b { transform: rotate(90deg); justify-self: center; }
}
@media (max-width: 980px) {
    .monitor-v2-overview { grid-template-columns: 1fr; }
    .monitor-hotspot-card { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
    .monitor-kpi-grid-eight { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .monitor-hotspot-metrics { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
    .monitor-kpi-grid-eight { grid-template-columns: 1fr; }
    .monitor-manual-invalidation { grid-template-columns: 1fr; }
    .monitor-manual-invalidation small { grid-column: auto; }
}

.monitor-v2-history-note {
  margin: 14px 0 18px;
  padding: 12px 14px;
  border: 1px solid rgba(15, 118, 110, .28);
  border-radius: 12px;
  background: rgba(15, 118, 110, .06);
  line-height: 1.5;
}

/* RoadCache private messenger: conversation list + chat thread */
.private-messenger-page {
    width: min(1540px, calc(100vw - 28px));
    max-width: none;
    margin-inline: auto;
}

.private-messenger-shell {
    display: grid;
    grid-template-columns: minmax(310px, 390px) minmax(0, 1fr);
    min-height: min(78vh, 880px);
    border: 1px solid var(--line);
    border-radius: 10px;
    overflow: hidden;
    background: #f7faf8;
    box-shadow: var(--shadow-soft);
}

.private-messenger-sidebar {
    display: grid;
    grid-template-rows: auto auto minmax(0, 1fr) auto;
    min-width: 0;
    background: rgba(255, 255, 255, .98);
    border-right: 1px solid var(--line);
}

.private-messenger-sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 20px 18px 15px;
    border-bottom: 1px solid var(--line);
}

.private-messenger-sidebar-head h1 {
    margin: 2px 0 0;
    font-size: clamp(25px, 2.2vw, 34px);
    line-height: 1;
}

.private-messenger-unread-total {
    display: inline-grid;
    place-items: center;
    min-width: 34px;
    height: 34px;
    padding-inline: 9px;
    border-radius: 999px;
    background: var(--green);
    color: #fff;
    font-weight: 950;
}

.private-messenger-new {
    border-bottom: 1px solid var(--line);
    background: #f8fbfa;
}

.private-messenger-new > summary {
    cursor: pointer;
    list-style: none;
    padding: 12px 18px;
    color: var(--green);
    font-weight: 900;
}

.private-messenger-new > summary::-webkit-details-marker {
    display: none;
}

.private-messenger-new-body {
    display: grid;
    gap: 12px;
    padding: 0 14px 14px;
}

.private-messenger-search .actions {
    display: flex;
    gap: 8px;
}

.private-messenger-search-results {
    display: grid;
    gap: 8px;
    max-height: 320px;
    overflow: auto;
}

.private-messenger-person-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: #fff;
}

.private-messenger-person-copy {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.private-messenger-person-copy small,
.private-messenger-empty-search {
    color: var(--muted);
}

.private-messenger-request-details {
    position: relative;
}

.private-messenger-request-details > summary {
    cursor: pointer;
    list-style: none;
    padding: 8px 11px;
    border-radius: 7px;
    background: var(--green);
    color: #fff;
    font-weight: 850;
}

.private-messenger-request-details > form {
    position: absolute;
    z-index: 20;
    right: 0;
    top: calc(100% + 7px);
    width: min(330px, calc(100vw - 44px));
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.private-messenger-conversation-list {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.private-messenger-conversation {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    min-height: 78px;
    padding: 10px 14px;
    border-bottom: 1px solid rgba(188, 209, 202, .6);
    color: inherit;
    text-decoration: none;
    transition: background .15s ease, border-color .15s ease;
}

.private-messenger-conversation:hover,
.private-messenger-conversation:focus-visible,
.private-messenger-conversation.is-active {
    background: rgba(232, 245, 239, .9);
}

.private-messenger-conversation.is-active {
    box-shadow: inset 4px 0 0 var(--green);
}

.private-messenger-conversation.has-unread strong {
    color: var(--green);
}

.private-chat-avatar {
    display: inline-grid;
    place-items: center;
    width: 48px;
    height: 48px;
    flex: 0 0 48px;
    border-radius: 50%;
    background: linear-gradient(145deg, rgba(22, 118, 88, .18), rgba(47, 117, 189, .12));
    background-position: center;
    background-size: cover;
    color: var(--green);
    font-weight: 950;
    text-transform: uppercase;
    box-shadow: inset 0 0 0 1px rgba(22, 118, 88, .16);
}

.private-chat-avatar.has-image {
    color: transparent;
}

.private-chat-avatar-large {
    width: 52px;
    height: 52px;
    flex-basis: 52px;
}

.private-messenger-conversation-copy,
.private-messenger-conversation-topline,
.private-messenger-conversation-bottomline {
    min-width: 0;
}

.private-messenger-conversation-copy {
    display: grid;
    gap: 5px;
}

.private-messenger-conversation-topline,
.private-messenger-conversation-bottomline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.private-messenger-conversation-topline strong,
.private-messenger-conversation-bottomline small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.private-messenger-conversation-topline time {
    flex: 0 0 auto;
    color: var(--muted);
    font-size: 12px;
}

.private-messenger-conversation-bottomline small {
    color: var(--muted);
}

.private-messenger-conversation-bottomline b {
    display: inline-grid;
    place-items: center;
    min-width: 23px;
    height: 23px;
    padding-inline: 6px;
    border-radius: 999px;
    background: var(--green);
    color: #fff;
    font-size: 12px;
}

.private-messenger-no-conversation {
    display: grid;
    gap: 5px;
    padding: 24px 18px;
    color: var(--muted);
    text-align: center;
}

.private-messenger-sidebar-footer {
    display: grid;
    gap: 3px;
    padding: 11px 14px;
    border-top: 1px solid var(--line);
    color: var(--muted);
    font-size: 12px;
}

.private-messenger-sidebar-footer a {
    color: var(--green);
    font-weight: 800;
}

.private-messenger-chat {
    min-width: 0;
    min-height: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    background:
        radial-gradient(circle at 12px 12px, rgba(22, 118, 88, .035) 2px, transparent 2.5px) 0 0 / 34px 34px,
        radial-gradient(circle at 28px 24px, rgba(47, 117, 189, .025) 1.5px, transparent 2px) 0 0 / 44px 44px,
        #eef4f0;
}

.private-chat-header {
    position: relative;
    z-index: 5;
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 11px;
    min-height: 74px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--line);
    background: rgba(250, 252, 251, .97);
}

.private-chat-header-copy {
    min-width: 0;
}

.private-chat-header-copy h2 {
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: clamp(21px, 2vw, 28px);
}

.private-chat-header-copy span {
    color: var(--muted);
    font-size: 13px;
}

.private-chat-mobile-back {
    display: none;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 50%;
    color: var(--green);
    font-size: 24px;
    font-weight: 900;
    text-decoration: none;
}

.private-chat-header-menu {
    position: relative;
}

.private-chat-header-menu > summary,
.private-chat-message-menu > summary {
    cursor: pointer;
    list-style: none;
    display: inline-grid;
    place-items: center;
    border-radius: 50%;
    color: var(--muted);
    font-weight: 950;
}

.private-chat-header-menu > summary {
    width: 40px;
    height: 40px;
    font-size: 24px;
}

.private-chat-header-menu > summary::-webkit-details-marker,
.private-chat-message-menu > summary::-webkit-details-marker {
    display: none;
}

.private-chat-header-menu > div {
    position: absolute;
    z-index: 20;
    top: calc(100% + 6px);
    right: 0;
    display: grid;
    gap: 9px;
    width: min(300px, calc(100vw - 34px));
    padding: 13px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.private-chat-header-menu p {
    margin: 0;
    color: var(--muted);
    font-size: 13px;
}

.private-chat-history {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scroll-behavior: smooth;
    padding: 18px clamp(14px, 4vw, 52px) 28px;
}

.private-chat-day-separator {
    display: flex;
    justify-content: center;
    margin: 8px 0 16px;
}

.private-chat-day-separator span {
    padding: 6px 11px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .9);
    color: var(--muted);
    font-size: 12px;
    font-weight: 850;
    box-shadow: 0 2px 7px rgba(0, 0, 0, .05);
}

.private-chat-message-row {
    display: flex;
    margin: 4px 0;
}

.private-chat-message-row.is-sent {
    justify-content: flex-end;
}

.private-chat-message-row.is-received {
    justify-content: flex-start;
}

.private-chat-bubble {
    position: relative;
    width: fit-content;
    max-width: min(78%, 760px);
    padding: 8px 10px 6px;
    border: 1px solid rgba(0, 0, 0, .05);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06);
}

.private-chat-message-row.is-sent .private-chat-bubble {
    background: #dff3e8;
    border-top-right-radius: 3px;
}

.private-chat-message-row.is-received .private-chat-bubble {
    border-top-left-radius: 3px;
}

.private-chat-message-subject {
    display: block;
    margin-bottom: 3px;
    color: var(--green);
    font-size: 13px;
}

.private-chat-bubble > p {
    margin: 0;
    color: var(--text);
    line-height: 1.42;
    overflow-wrap: anywhere;
}

.private-chat-bubble .message-attachment-photo,
.private-chat-bubble .message-attachment-audio,
.private-chat-bubble .message-attachment-location,
.private-chat-bubble .message-attachment-event,
.private-chat-bubble .message-attachment-poll {
    margin-top: 8px;
}

.private-chat-bubble .message-attachment-photo img {
    max-width: min(480px, 100%);
    max-height: 380px;
    border-radius: 8px;
}

.private-chat-message-meta {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
    min-height: 18px;
    margin-top: 3px;
    color: var(--muted);
    font-size: 11px;
}

.private-chat-receipt {
    color: #82938d;
    font-weight: 900;
    letter-spacing: -3px;
    padding-right: 3px;
}

.private-chat-receipt.is-read {
    color: #2f75bd;
}

.private-chat-message-menu {
    position: relative;
}

.private-chat-message-menu > summary {
    width: 22px;
    height: 22px;
    font-size: 16px;
}

.private-chat-message-menu form {
    position: absolute;
    z-index: 15;
    right: 0;
    bottom: calc(100% + 4px);
    width: 190px;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

.private-chat-message-menu button {
    width: 100%;
    font-size: 12px;
}

.private-chat-empty-thread,
.private-chat-placeholder {
    align-self: center;
    justify-self: center;
    display: grid;
    justify-items: center;
    gap: 8px;
    max-width: 470px;
    padding: 30px;
    color: var(--muted);
    text-align: center;
}

.private-chat-empty-thread > span,
.private-chat-placeholder-icon {
    display: grid;
    place-items: center;
    width: 74px;
    height: 74px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .88);
    font-size: 34px;
    box-shadow: var(--shadow-soft);
}

.private-chat-placeholder h2,
.private-chat-placeholder p,
.private-chat-empty-thread p {
    margin: 0;
}

.private-chat-composer-wrap {
    padding: 10px 12px;
    border-top: 1px solid var(--line);
    background: rgba(248, 251, 249, .98);
}

.private-chat-composer {
    gap: 7px;
}

.private-chat-subject-option {
    width: min(420px, 100%);
}

.private-chat-subject-option > summary {
    cursor: pointer;
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}

.private-chat-subject-option input {
    margin-top: 5px;
}

.private-chat-compose-line {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 9px;
    align-items: end;
}

.private-chat-compose-tools .message-rich-composer {
    display: contents;
}

.private-chat-compose-tools .message-composer-toolbar {
    align-self: end;
    margin-bottom: 3px;
}

.private-chat-compose-tools .message-emoji-picker,
.private-chat-compose-tools .message-composer-panel {
    grid-column: 1 / -1;
}

.private-chat-textarea-label {
    display: block !important;
}

.private-chat-textarea-label textarea {
    width: 100%;
    min-height: 48px;
    max-height: 150px;
    resize: vertical;
    padding: 12px 14px;
    border-radius: 22px;
    background: #fff;
}

.private-chat-send {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    min-width: 48px;
    padding: 0;
    border-radius: 50%;
    font-size: 20px;
}

.private-chat-readonly {
    margin: 0;
}

.private-chat-end-anchor {
    width: 1px;
    height: 1px;
}

@media (max-width: 900px) {
    .private-messenger-page {
        width: min(100%, calc(100vw - 16px));
    }

    .private-messenger-shell {
        grid-template-columns: 1fr;
        min-height: calc(100dvh - 150px);
    }

    .private-messenger-sidebar {
        border-right: 0;
    }

    .private-messenger-shell.has-active-conversation .private-messenger-sidebar {
        display: none;
    }

    .private-messenger-shell:not(.has-active-conversation) .private-messenger-chat {
        display: none;
    }

    .private-chat-mobile-back {
        display: grid;
    }

    .private-chat-history {
        padding-inline: 10px;
    }

    .private-chat-bubble {
        max-width: 88%;
    }
}

@media (max-width: 560px) {
    .private-messenger-page {
        padding-inline: 0;
    }

    .private-messenger-shell {
        border-radius: 0;
        min-height: calc(100dvh - 128px);
    }

    .private-messenger-sidebar-head {
        padding-inline: 13px;
    }

    .private-messenger-conversation {
        padding-inline: 11px;
    }

    .private-chat-header {
        grid-template-columns: auto auto minmax(0, 1fr) auto;
        padding-inline: 8px;
    }

    .private-chat-avatar-large {
        width: 44px;
        height: 44px;
        flex-basis: 44px;
    }

    .private-chat-bubble {
        max-width: 92%;
    }

    .private-chat-composer-wrap {
        padding: 7px;
    }

    .private-chat-compose-line {
        gap: 6px;
    }

    .private-chat-send {
        width: 44px;
        height: 44px;
        min-width: 44px;
    }

    .private-messenger-person-card {
        grid-template-columns: auto minmax(0, 1fr);
    }

    .private-messenger-person-action {
        grid-column: 1 / -1;
    }
}


.private-chat-message-row.is-first-unread-message .private-chat-bubble {
    background: #fff1b8;
    border-color: rgba(190, 135, 0, .35);
    box-shadow: 0 0 0 3px rgba(255, 201, 72, .24), 0 4px 14px rgba(91, 67, 0, .12);
    transition: background-color .35s ease, box-shadow .35s ease, border-color .35s ease;
}

.private-chat-message-row.is-targeted-message .private-chat-bubble {
    background: #fff1b8;
    border-color: rgba(190, 135, 0, .35);
    outline: 3px solid rgba(255, 201, 72, .28);
    outline-offset: 2px;
    box-shadow: 0 4px 14px rgba(91, 67, 0, .12);
    transition: background-color .35s ease, outline-color .35s ease, box-shadow .35s ease;
}

/* RoadCache - centre de communications enrichi */
.admin-communications-dashboard .communication-campaign-card,
.admin-communication-responses .communication-response-card {
    display: grid;
    gap: .75rem;
}
.communication-stats { margin-top: .25rem; }
.communication-stats .tag { text-decoration: none; }
.communication-interaction-options { margin-top: 1rem; }
.communication-interaction-options .feature-check span { display: grid; gap: .2rem; }
.communication-interaction-options .feature-check small { font-weight: 400; line-height: 1.35; }
.compact-admin-filter { margin-bottom: 1rem; }
.communication-response-list { display: grid; gap: .9rem; }
.member-campaign-message-page .campaign-message-thread { display: grid; gap: .8rem; margin: 1rem 0; }
.member-campaign-message-page .campaign-original-message .private-chat-bubble { max-width: min(900px, 92%); }
.member-campaign-message-page .campaign-reply-composer { margin-top: 1rem; }
.poll-option.is-readonly { cursor: default; }
@media (max-width: 760px) {
    .admin-communications-dashboard .page-actions,
    .admin-communication-responses .page-actions,
    .admin-communications-create .page-actions { width: 100%; }
    .admin-communications-dashboard .page-actions .button,
    .admin-communication-responses .page-actions .button,
    .admin-communications-create .page-actions .button { flex: 1 1 100%; }
}

/* Supervision : acces direct aux ecrans Visiteurs / Robots et autres vues. */
.supervision-screen-shortcuts { flex-wrap: wrap; gap: .4rem; }
.supervision-screen-shortcuts [data-supervision-go].is-active,
[data-supervision-go].is-active { outline: 2px solid currentColor; outline-offset: 1px; }
@media (max-width: 900px) {
    .supervision-screen-shortcuts { width: 100%; overflow-x: auto; flex-wrap: nowrap; padding-bottom: .2rem; }
    .supervision-screen-shortcuts button { white-space: nowrap; }
}


/* Supervision : les menus d'export restent au-dessus de la barre mobile/sticky. */
.supervision-head {
    position: relative;
    z-index: 60;
}
.supervision-head .page-actions {
    position: relative;
    z-index: 61;
    overflow: visible;
}
.supervision-head .monitor-export-menu {
    z-index: 70;
}
.supervision-head .monitor-export-menu > div {
    z-index: 80;
    min-width: 190px;
}
.supervision-head .monitor-export-options a {
    white-space: nowrap;
}
.supervision-export-all {
    border-color: #8eb9aa;
    background: #f4fbf8;
}
@media (max-width: 820px) {
    .supervision-head .page-actions {
        width: 100%;
        align-items: stretch;
    }
    .supervision-head .monitor-export-menu > div {
        right: auto;
        left: 0;
    }
    .supervision-export-all {
        flex: 1 1 190px;
        justify-content: center;
    }
}


/* Administration > Réglages : navigation par catégories + widgets repliables. */
.settings-admin-page {
    --settings-gap: .9rem;
}
.settings-control-panel {
    position: sticky;
    top: .65rem;
    z-index: 45;
    display: grid;
    gap: .8rem;
    margin: 0 0 1rem;
    padding: 1rem;
    border: 1px solid rgba(19, 72, 57, .14);
    border-radius: 18px;
    background: rgba(250, 253, 252, .96);
    box-shadow: 0 12px 32px rgba(24, 63, 52, .08);
    backdrop-filter: blur(10px);
}
.settings-control-panel__intro,
.settings-control-panel__actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .8rem;
    flex-wrap: wrap;
}
.settings-control-panel__intro > div {
    display: grid;
    gap: .15rem;
    min-width: min(100%, 320px);
}
.settings-control-panel__intro > div > span {
    color: var(--muted, #5d6f69);
    font-size: .9rem;
}
.settings-search {
    flex: 1 1 280px;
    max-width: 520px;
    margin: 0;
}
.settings-search input {
    width: 100%;
    min-height: 42px;
    margin: 0;
    border-radius: 999px;
    background: #fff;
}
.settings-page-tabs {
    display: flex;
    gap: .45rem;
    overflow-x: auto;
    padding: .1rem .05rem .35rem;
    scrollbar-width: thin;
}
.settings-page-tab {
    flex: 0 0 auto;
    min-height: 38px;
    padding: .55rem .85rem;
    border: 1px solid rgba(19, 72, 57, .15);
    border-radius: 999px;
    background: #fff;
    color: inherit;
    font: inherit;
    font-weight: 750;
    cursor: pointer;
    white-space: nowrap;
}
.settings-page-tab:hover,
.settings-page-tab:focus-visible {
    border-color: rgba(19, 111, 82, .42);
    background: #f1f8f5;
}
.settings-page-tab.is-active {
    border-color: #16815f;
    background: #16815f;
    color: #fff;
    box-shadow: 0 4px 12px rgba(22, 129, 95, .18);
}
.settings-control-panel__actions [data-settings-result-count] {
    color: var(--muted, #5d6f69);
    font-size: .88rem;
    font-weight: 650;
}
.settings-category-context {
    display: grid;
    grid-template-columns: minmax(150px, auto) 1fr;
    align-items: center;
    gap: .35rem 1rem;
    padding: .75rem .9rem;
    border: 1px solid rgba(22, 129, 95, .12);
    border-radius: 14px;
    background: #f4faf7;
}
.settings-category-context strong {
    color: #11694f;
    font-size: .92rem;
}
.settings-category-context span {
    color: var(--muted, #5d6f69);
    font-size: .86rem;
    line-height: 1.4;
}
.settings-control-panel .button.compact {
    min-height: 34px;
    padding: .4rem .7rem;
}
.settings-page-section[hidden] {
    display: none !important;
}
.settings-page-section,
.settings-admin-page .subscription-feature-group {
    scroll-margin-top: 185px;
}
.settings-widget {
    position: relative;
    overflow: clip;
    border-radius: 16px;
    transition: box-shadow .18s ease, border-color .18s ease;
}
.settings-widget + .settings-widget {
    margin-top: var(--settings-gap);
}
.settings-widget-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    width: 100%;
    min-height: 52px;
    padding: .75rem .9rem;
    border: 0;
    border-bottom: 1px solid rgba(19, 72, 57, .10);
    background: linear-gradient(180deg, #fbfefd 0%, #f3f9f6 100%);
    color: inherit;
    text-align: left;
    cursor: pointer;
}
.settings-widget-summary:hover,
.settings-widget-summary:focus-visible {
    background: #edf7f2;
}
.settings-widget-summary__copy {
    display: grid;
    gap: .18rem;
    min-width: 0;
}
.settings-widget-summary__title {
    min-width: 0;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.25;
}
.settings-widget-summary__subtitle {
    max-width: 760px;
    color: var(--muted, #5d6f69);
    font-size: .8rem;
    font-weight: 600;
    line-height: 1.35;
}
.settings-widget-summary__meta {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    flex: 0 0 auto;
    color: var(--muted, #5d6f69);
    font-size: .78rem;
    font-weight: 700;
}
.settings-widget-summary__badge {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: .25rem .55rem;
    border: 1px solid rgba(19, 72, 57, .12);
    border-radius: 999px;
    background: #fff;
    color: #49645b;
    font-size: .72rem;
    font-weight: 800;
    white-space: nowrap;
}
.settings-widget-summary__badge.is-advanced {
    border-color: rgba(138, 90, 0, .2);
    background: #fff7e7;
    color: #805500;
}
.settings-widget-summary__chevron {
    width: 1.65rem;
    height: 1.65rem;
    display: inline-grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(22, 129, 95, .10);
    font-size: 1.1rem;
    line-height: 1;
    transform: rotate(0deg);
    transition: transform .16s ease;
}
.settings-widget.is-collapsed .settings-widget-summary__chevron {
    transform: rotate(-90deg);
}
.settings-widget-body {
    padding-top: .15rem;
}
.settings-widget-body[hidden] {
    display: none !important;
}
.settings-widget .settings-original-title {
    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;
}
.settings-widget .page-head .settings-original-title + p {
    margin-top: 0;
}
.settings-admin-page .subscription-feature-group.settings-widget {
    border: 1px solid rgba(19, 72, 57, .12);
    background: #fff;
}
.settings-admin-page .subscription-feature-group.settings-widget .settings-widget-body {
    padding: .7rem .9rem 1rem;
}
.settings-admin-page .settings-widget-body > .subscription-feature-group.settings-widget {
    margin-top: .75rem;
}
.settings-admin-page .settings-widget-body > .subscription-feature-group.settings-widget:first-of-type {
    margin-top: .25rem;
}
.settings-admin-page .subscription-feature-group[data-settings-level="advanced"].settings-widget {
    border-color: rgba(138, 90, 0, .22);
}
.settings-admin-page .settings-theme-intro {
    margin: 0 0 .2rem;
    padding: .65rem .75rem;
    border-left: 3px solid rgba(22, 129, 95, .45);
    border-radius: 0 10px 10px 0;
    background: #f6fbf8;
}
.settings-admin-page .settings-widget-body > h4 {
    margin: .55rem 0 .1rem;
    padding: .55rem .7rem;
    border-radius: 10px;
    background: #eef7f3;
    color: #245c4b;
    font-size: .86rem;
    letter-spacing: .01em;
}
.settings-admin-page .settings-widget-body .form-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
    gap: .75rem;
}
.settings-admin-page .settings-widget-body .form-grid > label:not(.toggle-line),
.settings-admin-page .settings-widget-body > label:not(.toggle-line) {
    align-content: start;
    padding: .72rem .78rem;
    border: 1px solid rgba(19, 72, 57, .11);
    border-radius: 12px;
    background: #fff;
    color: #405750;
    box-shadow: 0 2px 8px rgba(19, 72, 57, .025);
}
.settings-admin-page .settings-widget-body .form-grid > label:not(.toggle-line):focus-within,
.settings-admin-page .settings-widget-body > label:not(.toggle-line):focus-within {
    border-color: rgba(22, 129, 95, .4);
    box-shadow: 0 0 0 3px rgba(22, 129, 95, .08);
}
.settings-admin-page .settings-widget-body .form-grid > label input,
.settings-admin-page .settings-widget-body .form-grid > label select,
.settings-admin-page .settings-widget-body .form-grid > label textarea,
.settings-admin-page .settings-widget-body > label input,
.settings-admin-page .settings-widget-body > label select,
.settings-admin-page .settings-widget-body > label textarea {
    margin-top: .15rem;
    background: #fbfdfc;
}
.settings-admin-page .settings-widget-body .field-hint {
    line-height: 1.45;
}
.settings-admin-page .settings-widget-body .toggle-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: .7rem;
}
.settings-admin-page .settings-widget-body .toggle-line {
    border-radius: 12px;
    background: #fbfdfc;
}
.settings-admin-page .settings-widget-body .toggle-line:has(input:checked) {
    border-color: rgba(22, 129, 95, .3);
    background: #eff9f4;
}
.settings-admin-page .settings-widget-body .button.secondary {
    border-radius: 10px;
}
.settings-search-match {
    outline: 2px solid rgba(22, 129, 95, .24);
    outline-offset: 2px;
}
.settings-empty-search {
    display: none;
    padding: 1rem;
    border: 1px dashed rgba(19, 72, 57, .25);
    border-radius: 14px;
    background: #fbfefd;
    color: var(--muted, #5d6f69);
    text-align: center;
}
.settings-empty-search.is-visible {
    display: block;
}
.settings-save-bar {
    position: sticky;
    bottom: .65rem;
    z-index: 40;
    align-items: center;
    padding: .7rem;
    border: 1px solid rgba(19, 72, 57, .16);
    border-radius: 16px;
    background: rgba(250, 253, 252, .96);
    box-shadow: 0 -8px 24px rgba(24, 63, 52, .10);
    backdrop-filter: blur(10px);
}
.settings-save-state {
    margin-right: auto;
    color: var(--muted, #5d6f69);
    font-size: .85rem;
    font-weight: 700;
}
.settings-save-state.is-dirty {
    color: #8a5a00;
}
@media (max-width: 820px) {
    .settings-control-panel {
        top: .3rem;
        padding: .75rem;
        border-radius: 14px;
    }
    .settings-control-panel__intro {
        align-items: stretch;
    }
    .settings-search {
        flex-basis: 100%;
        max-width: none;
    }
    .settings-control-panel__actions {
        justify-content: flex-start;
    }
    .settings-control-panel__actions [data-settings-result-count] {
        flex: 1 1 100%;
    }
    .settings-category-context {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
    .settings-widget-summary {
        align-items: flex-start;
    }
    .settings-widget-summary__subtitle {
        display: -webkit-box;
        overflow: hidden;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
    }
    .settings-widget-summary__meta {
        gap: .3rem;
    }
    .settings-widget-summary__badge.is-advanced {
        display: none;
    }
    .settings-widget-summary {
        padding: .7rem .75rem;
    }
    .settings-save-bar {
        bottom: .35rem;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: .45rem;
    }
    .settings-save-state {
        grid-column: 1 / -1;
        margin: 0;
        text-align: center;
    }
    .settings-save-bar > button,
    .settings-save-bar > .button {
        width: 100%;
        justify-content: center;
    }
}


/* Android releases - quick Stable / Beta / Testing management */
.android-release-quick {
    margin: 1rem 0 1.25rem;
    padding: 1rem;
    border: 1px solid rgba(19, 72, 57, .15);
    border-radius: 20px;
    background: linear-gradient(145deg, rgba(238, 249, 245, .96), rgba(255, 255, 255, .98));
    box-shadow: 0 12px 34px rgba(19, 72, 57, .08);
}
.android-release-quick__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}
.android-release-quick__head h2 {
    margin: .12rem 0 .35rem;
}
.android-release-quick__head p {
    max-width: 760px;
    margin: 0;
    color: var(--muted, #5d6f69);
}
.android-release-quick__badge {
    flex: 0 0 auto;
    padding: .55rem .8rem;
    border-radius: 999px;
    background: #123f34;
    color: #fff;
    font-size: .82rem;
    font-weight: 800;
    white-space: nowrap;
}
.android-release-quick__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .85rem;
}
.android-release-channel-card {
    padding: 1rem;
    border: 1px solid rgba(19, 72, 57, .14);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 7px 20px rgba(19, 72, 57, .06);
}
.android-release-channel-card--stable {
    border-top: 4px solid #16815f;
}
.android-release-channel-card--beta {
    border-top: 4px solid #6657c8;
}
.android-release-channel-card--test {
    border-top: 4px solid #c66a25;
}
.android-release-channel-card__title {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
}
.android-release-channel-card__title h3 {
    margin: .15rem 0 0;
    font-size: 1.22rem;
}
.android-release-channel-pill {
    padding: .4rem .65rem;
    border-radius: 999px;
    background: rgba(22, 129, 95, .10);
    color: #125c47;
    font-size: .78rem;
    font-weight: 800;
}
.android-release-channel-card--beta .android-release-channel-pill {
    background: rgba(102, 87, 200, .10);
    color: #5043a6;
}
.android-release-channel-card--test .android-release-channel-pill {
    background: rgba(198, 106, 37, .12);
    color: #8a4617;
}
.android-release-current {
    margin: .8rem 0;
    padding: .7rem .8rem;
    border-radius: 12px;
    background: #f5f8f7;
}
.android-release-current span {
    margin-left: .35rem;
    color: var(--muted, #5d6f69);
    font-size: .86rem;
}
.android-release-quick-form label {
    display: block;
    font-weight: 800;
}

.android-release-current-note {
    margin: -.25rem 0 .8rem;
    padding: .65rem .75rem;
    border: 1px solid rgba(19, 72, 57, .10);
    border-radius: 12px;
    background: rgba(238, 249, 245, .55);
    font-size: .88rem;
}
.android-release-current-note strong {
    display: block;
    margin-bottom: .25rem;
    color: #34574d;
}
.android-release-current-note p {
    margin: 0;
    white-space: pre-line;
    color: var(--muted, #5d6f69);
}
.android-release-quick-form {
    display: grid;
    gap: .7rem;
}
.android-release-quick-form input,
.android-release-quick-form textarea {
    width: 100%;
    margin-top: .4rem;
}
.android-release-quick-form textarea {
    min-height: 105px;
    resize: vertical;
}
.android-release-publish-button {
    width: 100%;
    justify-content: center;
}
.android-release-number-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: .55rem;
    margin-top: .4rem;
}
.android-release-number-row input {
    min-width: 0;
    font-size: 1.2rem;
    font-weight: 800;
}
.android-release-quick-form small,
.android-release-quick__hint {
    display: block;
    margin-top: .55rem;
    color: var(--muted, #5d6f69);
    line-height: 1.45;
}
.android-release-quick__hint {
    margin-bottom: 0;
    padding: .7rem .8rem;
    border-radius: 12px;
    background: rgba(255, 244, 216, .72);
    color: #6b4a00;
}
.android-release-advanced {
    margin: 0 0 1.25rem;
    border: 1px solid rgba(19, 72, 57, .14);
    border-radius: 16px;
    background: #fff;
    overflow: hidden;
}
.android-release-advanced > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem;
    cursor: pointer;
    list-style: none;
    font-weight: 800;
}
.android-release-advanced > summary::-webkit-details-marker { display: none; }
.android-release-advanced > summary span:first-child {
    display: grid;
    gap: .15rem;
}
.android-release-advanced > summary small {
    color: var(--muted, #5d6f69);
    font-weight: 600;
}
.android-release-advanced > summary span:last-child {
    display: grid;
    place-items: center;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 50%;
    background: rgba(22, 129, 95, .10);
    transition: transform .16s ease;
}
.android-release-advanced[open] > summary span:last-child { transform: rotate(45deg); }
.android-release-advanced__body {
    padding: 0 1rem 1rem;
}
.android-release-advanced__body .admin-form-card {
    margin: 0;
    box-shadow: none;
}
@media (max-width: 820px) {
    .android-release-quick__head,
    .android-release-channel-card__title {
        align-items: stretch;
    }
    .android-release-quick__head {
        display: grid;
    }
    .android-release-quick__badge {
        width: max-content;
    }
    .android-release-quick__grid {
        grid-template-columns: 1fr;
    }
    .android-release-number-row {
        grid-template-columns: 1fr;
    }
    .android-release-number-row .button {
        width: 100%;
        justify-content: center;
    }
}

/* Android versions V2 : trois fiches completes, une par canal. */
.android-release-full-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 22px;
    margin: 18px 0 24px;
}
.android-release-full-card {
    margin: 0;
}
.android-release-full-card > .page-head {
    margin-bottom: 14px;
}
.android-release-full-card form {
    display: grid;
    gap: 16px;
}
.android-release-full-card .form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.android-release-current-list {
    margin-top: 28px;
}
@media (max-width: 820px) {
    .android-release-full-card .form-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* --- Administration : thèmes officiels de carte --- */
.admin-theme-colors{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem;margin:1rem 0}
.admin-theme-color-field{display:flex;flex-direction:column;gap:.4rem;font-weight:700}
.admin-theme-color-row{display:grid;grid-template-columns:56px 1fr;gap:.5rem;align-items:center}
.admin-theme-color-row input[type="color"]{width:56px;height:44px;padding:2px;border:1px solid #cbd5d1;border-radius:10px;background:#fff}
.admin-theme-color-row input[type="text"]{min-width:0;text-transform:uppercase}
.admin-theme-swatches{display:flex;gap:2px;min-width:165px;justify-content:flex-end}
.admin-theme-swatches i{display:block;width:14px;height:26px;border-radius:3px;border:1px solid rgba(0,0,0,.08)}
.admin-theme-icon-preview{display:flex;align-items:center;gap:1rem;padding:.8rem;margin-bottom:1rem;background:#f5f8f6;border:1px solid #dce6e1;border-radius:12px}
.admin-theme-icon-preview img{width:72px;height:72px;object-fit:contain;background:#fff;border-radius:12px;padding:6px;border:1px solid #dfe7e3}
@media (max-width:700px){.admin-theme-swatches{display:none}.admin-theme-colors{grid-template-columns:1fr}}

/* --- Administration : thèmes officiels de carte V2 --- */
.map-themes-page {
    display: grid;
    gap: 22px;
}
.map-themes-page > .page-head {
    margin-bottom: 0;
}
.map-themes-page > .page-head h1 {
    margin-bottom: .45rem;
}
.map-theme-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}
.map-theme-stat-card,
.map-theme-card,
.map-theme-create-card,
.map-theme-family {
    border: 1px solid rgba(19, 72, 57, .14);
    background: #fff;
    box-shadow: 0 10px 28px rgba(19, 72, 57, .06);
}
.map-theme-stat-card {
    display: grid;
    gap: .28rem;
    min-height: 120px;
    padding: 18px;
    border-radius: 18px;
}
.map-theme-stat-card__label {
    color: var(--muted, #5d6f69);
    font-size: .82rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.map-theme-stat-card > strong {
    color: var(--ink, #0f2b23);
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    line-height: 1.05;
}
.map-theme-stat-card > small {
    color: var(--muted, #5d6f69);
    line-height: 1.4;
}
.map-theme-card {
    padding: 22px;
    border-radius: 20px;
}
.map-theme-card__heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 16px;
}
.map-theme-card__heading h2,
.map-theme-list-heading h2 {
    margin: .12rem 0 .35rem;
}
.map-theme-card__heading p,
.map-theme-list-heading p {
    margin: 0;
    color: var(--muted, #5d6f69);
}
.map-theme-default-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: end;
}
.map-theme-default-form > label {
    margin: 0;
}
.map-theme-pill {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: .36rem .65rem;
    border-radius: 999px;
    background: #eef5f2;
    color: #315d50;
    font-size: .76rem;
    font-weight: 800;
    white-space: nowrap;
}
.map-theme-pill.is-active {
    background: rgba(22, 129, 95, .12);
    color: #126247;
}
.map-theme-pill.is-muted {
    background: #f2f2f2;
    color: #6d7773;
}
.map-theme-pill.is-default {
    background: #fff1c9;
    color: #7a5200;
}
.map-theme-create-card,
.map-theme-family {
    overflow: clip;
    border-radius: 20px;
}
.map-theme-create-card > summary,
.map-theme-family > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 74px;
    padding: 17px 20px;
    cursor: pointer;
    list-style: none;
    user-select: none;
    background: linear-gradient(180deg, #fbfefd 0%, #f4f9f7 100%);
}
.map-theme-create-card > summary::-webkit-details-marker,
.map-theme-family > summary::-webkit-details-marker {
    display: none;
}
.map-theme-create-card > summary:hover,
.map-theme-family > summary:hover {
    background: #eef7f3;
}
.map-theme-create-card > summary > span:first-child,
.map-theme-family__identity {
    display: grid;
    gap: 4px;
    min-width: 0;
}
.map-theme-create-card > summary strong,
.map-theme-family > summary strong {
    color: var(--ink, #0f2b23);
    font-size: 1.08rem;
}
.map-theme-create-card > summary small,
.map-theme-family > summary small {
    color: var(--muted, #5d6f69);
    font-weight: 650;
}
.map-theme-details-toggle {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(22, 129, 95, .12);
    color: #126247;
    font-size: 1.25rem;
    font-weight: 900;
    line-height: 1;
    transition: transform .16s ease;
}
.map-theme-create-card[open] > summary .map-theme-details-toggle,
.map-theme-family[open] > summary .map-theme-details-toggle {
    transform: rotate(45deg);
}
.map-theme-create-card[open] > summary,
.map-theme-family[open] > summary {
    border-bottom: 1px solid rgba(19, 72, 57, .12);
}
.map-theme-create-card__body,
.map-theme-family__body {
    padding: 20px;
}
.map-theme-main-fields {
    margin-bottom: 12px;
}
.map-theme-toggle-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 18px;
}
.map-theme-toggle-grid .toggle-line {
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid rgba(19, 72, 57, .12);
    border-radius: 12px;
    background: #f7faf9;
    color: var(--ink, #0f2b23);
}
.map-theme-variant-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.map-theme-variant {
    min-width: 0;
    padding: 17px;
    border: 1px solid rgba(19, 72, 57, .12);
    border-radius: 18px;
}
.map-theme-variant--day {
    background: linear-gradient(180deg, #fffdf7 0%, #fff 45%);
}
.map-theme-variant--night {
    background: linear-gradient(180deg, #f2f6f6 0%, #fff 45%);
}
.map-theme-variant__heading {
    margin-bottom: 14px;
}
.map-theme-variant__heading > div {
    display: flex;
    align-items: center;
    gap: 10px;
}
.map-theme-variant__heading strong,
.map-theme-variant__heading small {
    display: block;
}
.map-theme-variant__heading strong {
    font-size: 1.02rem;
}
.map-theme-variant__heading small {
    margin-top: 2px;
    color: var(--muted, #5d6f69);
}
.map-theme-mode-icon {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 12px;
    background: rgba(255, 205, 74, .18);
    font-size: 1.25rem;
}
.map-theme-variant--night .map-theme-mode-icon {
    background: rgba(67, 92, 115, .12);
}
.map-themes-page .admin-theme-colors {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 14px 0 0;
}
.map-themes-page .admin-theme-color-field {
    gap: 5px;
    min-width: 0;
    color: #52645e;
    font-size: .83rem;
}
.map-themes-page .admin-theme-color-row {
    grid-template-columns: 46px minmax(0, 1fr);
}
.map-themes-page .admin-theme-color-row input[type="color"] {
    width: 46px;
    height: 42px;
}
.map-themes-page .admin-theme-color-row input[type="text"] {
    min-width: 0;
    font-size: .9rem;
    font-weight: 750;
}
.map-theme-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(19, 72, 57, .10);
}
.map-theme-list-heading {
    margin-top: 8px;
}
.map-theme-list {
    display: grid;
    gap: 14px;
}
.map-theme-family__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.map-theme-family__right {
    display: flex;
    align-items: center;
    gap: 12px;
}
.map-themes-page .admin-theme-swatches {
    min-width: 0;
}
.map-themes-page .admin-theme-swatches i {
    width: 12px;
    height: 28px;
}
.map-themes-page .admin-theme-icon-preview {
    margin: 0 0 12px;
}
.map-themes-page .admin-theme-icon-preview div {
    min-width: 0;
}
.map-themes-page .admin-theme-icon-preview small {
    display: block;
    max-width: 260px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--muted, #5d6f69);
}
.map-theme-danger-zone {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #eadede;
}
.map-theme-danger-zone p {
    margin: 0;
    padding: 12px 14px;
    border-radius: 12px;
    background: #fff8e6;
    color: #705200;
}
.map-theme-danger-zone form {
    margin: 0;
}
.map-themes-page input:disabled,
.map-themes-page select:disabled,
.map-themes-page button:disabled {
    opacity: .58;
    cursor: not-allowed;
}
@media (max-width: 980px) {
    .map-theme-variant-grid {
        grid-template-columns: minmax(0, 1fr);
    }
    .map-themes-page .admin-theme-colors {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
@media (max-width: 820px) {
    .map-theme-stats,
    .map-theme-toggle-grid {
        grid-template-columns: minmax(0, 1fr);
    }
    .map-theme-card__heading,
    .map-theme-default-form {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
    }
    .map-theme-card__heading .map-theme-pill {
        width: max-content;
    }
    .map-theme-default-form .button {
        width: 100%;
        justify-content: center;
    }
    .map-theme-family__right .admin-theme-swatches {
        display: none;
    }
}
@media (max-width: 620px) {
    .map-theme-create-card__body,
    .map-theme-family__body,
    .map-theme-card {
        padding: 15px;
    }
    .map-theme-create-card > summary,
    .map-theme-family > summary {
        padding: 14px 15px;
    }
    .map-themes-page .admin-theme-colors {
        grid-template-columns: minmax(0, 1fr);
    }
    .map-theme-family__meta {
        gap: 4px;
    }
    .map-theme-pill {
        font-size: .7rem;
    }
    .map-theme-actions .button {
        width: 100%;
        justify-content: center;
    }
}

/* --- Administration thèmes carte : programmation + aperçus vectoriels Jour/Nuit --- */
.map-theme-schedule {
    display: grid;
    grid-template-columns: minmax(220px, 1.3fr) minmax(150px, .7fr) minmax(150px, .7fr);
    gap: 12px;
    align-items: end;
    margin: 0 0 18px;
    padding: 14px;
    border: 1px solid rgba(19, 72, 57, .12);
    border-radius: 14px;
    background: #f8fbfa;
}
.map-theme-schedule > label {
    margin: 0;
}
.map-theme-schedule > .field-hint {
    grid-column: 1 / -1;
    margin: 0;
}
.map-theme-vector-preview {
    overflow: hidden;
    margin: 0 0 14px;
    border: 1px solid rgba(19, 72, 57, .14);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 7px 22px rgba(18, 54, 43, .07);
}
.map-theme-vector-preview__head,
.map-theme-vector-preview__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 12px;
}
.map-theme-vector-preview__head {
    border-bottom: 1px solid rgba(19, 72, 57, .10);
}
.map-theme-vector-preview__head > div {
    min-width: 0;
}
.map-theme-vector-preview__head strong,
.map-theme-vector-preview__head small {
    display: block;
}
.map-theme-vector-preview__head small,
.map-theme-vector-preview__footer {
    color: var(--muted, #5d6f69);
    font-size: .76rem;
}
.map-theme-vector-preview__head > span {
    font-size: 1.3rem;
}
.map-theme-vector-preview__map {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 640 / 300;
}
.map-theme-vector-preview__footer {
    border-top: 1px solid rgba(19, 72, 57, .10);
    font-weight: 750;
}
.map-theme-vector-preview__footer > span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.map-theme-vector-preview__marker-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #137c59;
}
.map-theme-variant > label > small {
    color: var(--muted, #5d6f69);
    font-weight: 650;
}
@media (max-width: 820px) {
    .map-theme-schedule {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }
    .map-theme-schedule > label:first-child {
        grid-column: 1 / -1;
    }
}
@media (max-width: 560px) {
    .map-theme-schedule {
        grid-template-columns: minmax(0, 1fr);
    }
    .map-theme-schedule > label:first-child,
    .map-theme-schedule > .field-hint {
        grid-column: auto;
    }
    .map-theme-vector-preview__footer {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Participants admin - dashboard d'actions V6 */
.participant-action-dashboard { padding: 20px; }
.participant-action-dashboard-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}
.participant-action-dashboard-head h2 { margin-bottom: 4px; }
.participant-action-dashboard-head p:not(.eyebrow) { margin: 0; color: #60736d; }
.participant-action-total {
    min-width: 210px;
    padding: 14px 18px;
    border: 1px solid #cfddd8;
    border-radius: 16px;
    background: #f7faf9;
}
.participant-action-total span,
.participant-action-total small { display: block; color: #60736d; }
.participant-action-total strong { display: block; margin: 4px 0; color: #102d25; font-size: 2.2rem; line-height: 1; }
.participant-action-total.has-actions { border-color: #efc46a; background: #fff8e8; }
.participant-action-total.has-actions strong { color: #8a5a00; }
.participant-action-total.is-clear { border-color: #b9dfcf; background: #effaf5; }
.participant-action-total.is-clear strong { color: #086347; }
.participant-widget-title { margin: 8px 0 10px; font-size: 1rem; color: #334b44; }
.participant-widget-title-follow { margin-top: 20px; }
.participant-widget-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
.participant-action-widget {
    display: block;
    min-height: 132px;
    padding: 16px;
    border: 1px solid #cfddd8;
    border-radius: 15px;
    background: #fff;
    color: inherit;
    text-decoration: none;
    box-shadow: 0 8px 24px rgba(25, 62, 52, .06);
    transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.participant-action-widget:hover {
    transform: translateY(-1px);
    border-color: #80b9a7;
    box-shadow: 0 10px 28px rgba(25, 62, 52, .11);
}
.participant-action-widget > span { display: block; min-height: 40px; color: #526660; font-weight: 800; }
.participant-action-widget > strong { display: block; margin: 3px 0 8px; color: #102d25; font-size: 2.35rem; line-height: 1; }
.participant-action-widget > small { color: #70817c; line-height: 1.35; }
.participant-action-widget.needs-attention { border-color: #e8c26f; background: #fffaf0; }
.participant-action-widget.needs-attention > strong { color: #8a5a00; }
.participant-action-widget.is-empty { background: #fbfcfc; }
.participant-action-widget.is-active { outline: 3px solid rgba(16, 122, 91, .18); border-color: #107a5b; }
.participant-filter-bar { align-items: end; }

@media (max-width: 1050px) {
    .participant-widget-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
    .participant-action-dashboard { padding: 15px; }
    .participant-widget-grid { grid-template-columns: 1fr; }
    .participant-action-total { width: 100%; min-width: 0; }
}

/* RoadCache V8 - partage et suivi des campagnes participants */
.campaign-share-tools {
    display:flex;
    gap:.5rem;
    align-items:center;
    flex-wrap:wrap;
}
.campaign-share-tools code {
    flex:1 1 320px;
    min-width:220px;
    overflow-wrap:anywhere;
}
.campaign-metric-grid {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:.65rem;
}
.campaign-metric-card {
    border:1px solid #d8e3df;
    border-radius:14px;
    padding:.8rem .9rem;
    background:#fbfdfc;
}
.campaign-metric-card span { display:block; color:#60736d; font-size:.82rem; font-weight:800; }
.campaign-metric-card strong { display:block; margin-top:.25rem; color:#102d25; font-size:1.35rem; }
.nav-count-badge {
    display:inline-flex;
    min-width:1.25rem;
    height:1.25rem;
    padding:0 .32rem;
    margin-left:.3rem;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    background:#b42318;
    color:#fff;
    font-size:.72rem;
    font-weight:900;
    line-height:1;
    vertical-align:middle;
}
@media (max-width: 900px) {
    .campaign-metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 560px) {
    .campaign-metric-grid { grid-template-columns:1fr; }
    .campaign-share-tools > .button,
    .campaign-share-tools > button { width:100%; justify-content:center; }
}


/* RoadCache V8.7 - cartes de campagnes plus lisibles */
.campaign-list-shell {
    margin-bottom: 1rem;
    padding: 20px;
}
.campaign-list-head {
    align-items: center;
    margin-bottom: 14px;
}
.campaign-list-note {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 220px;
    padding: 12px 15px;
    border: 1px solid #d8e3df;
    border-radius: 14px;
    background: #f7faf9;
    color: #587069;
}
.campaign-list-note strong { color: #14372d; }
.participant-campaign-card {
    margin: 14px 0;
    padding: 0;
    overflow: hidden;
    border: 1px solid #d7e2de;
    border-radius: 20px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(24, 61, 51, .07);
}
.participant-campaign-head {
    padding: 20px 22px 14px;
    border-bottom: 1px solid #edf2f0;
    background: linear-gradient(180deg, #fbfdfc 0%, #fff 100%);
}
.participant-campaign-title-line {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: space-between;
    flex-wrap: wrap;
}
.participant-campaign-title-line h3 {
    margin: 0;
    color: #102d25;
    font-size: 1.35rem;
}
.campaign-status-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 900;
    letter-spacing: .04em;
}
.campaign-status-pill.is-active {
    color: #07543f;
    background: #dff6eb;
    border: 1px solid #a9dfca;
}
.campaign-status-pill.is-closed {
    color: #5f6865;
    background: #f0f3f2;
    border: 1px solid #d2dad7;
}
.campaign-meta-line {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 10px;
}
.campaign-meta-line > span {
    display: inline-flex;
    padding: 5px 9px;
    border: 1px solid #dce7e3;
    border-radius: 999px;
    background: #f8fbfa;
    color: #50665f;
    font-size: .78rem;
    font-weight: 800;
}
.campaign-description {
    margin: 12px 0 0;
    color: #587069;
    line-height: 1.5;
}
.campaign-overview-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    padding: 16px 22px;
}
.campaign-overview-card {
    min-width: 0;
    padding: 13px 14px;
    border: 1px solid #dce6e2;
    border-radius: 14px;
    background: #fbfdfc;
}
.campaign-overview-card > span,
.campaign-info-card > span {
    display: block;
    color: #61766f;
    font-size: .76rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .035em;
}
.campaign-overview-card > strong {
    display: block;
    margin-top: 4px;
    color: #102d25;
    font-size: 1.55rem;
    line-height: 1.1;
}
.campaign-overview-card > strong.campaign-version-value {
    font-size: 1.05rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.campaign-overview-card > small {
    display: block;
    margin-top: 5px;
    color: #71837d;
}
.campaign-action-bar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    padding: 0 22px 18px;
}
.campaign-action-group {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.campaign-action-label {
    width: 100%;
    color: #6a7c76;
    font-size: .72rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.campaign-action-group-secondary {
    justify-content: flex-end;
}
.campaign-share-panel,
.campaign-statistics {
    margin: 0 22px 16px;
    padding: 16px;
    border: 1px solid #dbe6e2;
    border-radius: 16px;
    background: #f8fbfa;
}
.campaign-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}
.campaign-section-heading h4 {
    margin: 2px 0 0;
    color: #183a31;
    font-size: 1rem;
}
.campaign-section-heading small {
    max-width: 560px;
    color: #6c7f79;
}
.campaign-public-link {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
}
.campaign-public-link code {
    min-width: 0;
    padding: 10px 12px;
    border: 1px solid #d8e2df;
    border-radius: 11px;
    background: #fff;
    overflow-wrap: anywhere;
}
.campaign-share-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
}
.campaign-info-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding: 0 22px 16px;
}
.campaign-info-card {
    padding: 14px 15px;
    border: 1px solid #e0e8e5;
    border-radius: 14px;
    background: #fff;
}
.campaign-info-card > strong {
    display: block;
    margin-top: 5px;
    color: #173a30;
    font-size: .98rem;
}
.campaign-info-card > small {
    display: block;
    margin-top: 5px;
    color: #687b75;
    line-height: 1.4;
}
.campaign-statistics .campaign-metric-grid { margin-top: 0; }
.campaign-details-stack {
    padding: 0 22px 20px;
}
.campaign-detail-box {
    margin-top: 9px;
    border: 1px solid #dce6e2;
    border-radius: 13px;
    background: #fff;
    overflow: hidden;
}
.campaign-detail-box > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 15px;
    cursor: pointer;
    list-style-position: inside;
    background: #fbfdfc;
}
.campaign-detail-box > summary strong { color: #193b32; }
.campaign-detail-box > summary span {
    color: #73847f;
    font-size: .82rem;
    text-align: right;
}
.campaign-detail-content {
    margin: 0;
    padding: 15px;
    border-top: 1px solid #e8efec;
}
.campaign-danger-zone {
    border-color: #ebc6bd;
    background: #fffafa;
}
.campaign-danger-zone > summary {
    background: #fff6f4;
}
.campaign-danger-zone > summary strong { color: #8d2f20; }
.campaign-delete-form {
    display: grid;
    grid-template-columns: minmax(220px, 420px) auto;
    gap: 12px;
    align-items: end;
    margin-top: 14px;
}
.campaign-delete-form label { margin: 0; }
.campaign-delete-form .danger { min-height: 44px; }
@media (max-width: 1000px) {
    .campaign-overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .campaign-action-group-secondary { justify-content: flex-start; }
}
@media (max-width: 700px) {
    .campaign-list-shell { padding: 14px; }
    .participant-campaign-head,
    .campaign-overview-grid,
    .campaign-action-bar,
    .campaign-info-grid,
    .campaign-details-stack { padding-left: 14px; padding-right: 14px; }
    .campaign-share-panel,
    .campaign-statistics { margin-left: 14px; margin-right: 14px; }
    .campaign-info-grid,
    .campaign-overview-grid { grid-template-columns: 1fr; }
    .campaign-public-link { grid-template-columns: 1fr; }
    .campaign-public-link button,
    .campaign-share-actions > *,
    .campaign-action-group > *:not(.campaign-action-label) { width: 100%; justify-content: center; }
    .campaign-detail-box > summary {
        align-items: flex-start;
        flex-direction: column;
    }
    .campaign-detail-box > summary span { text-align: left; }
    .campaign-delete-form { grid-template-columns: 1fr; }
}

/* RoadCache Aide V9.0 - presentation plus courte et lisible */
.help-center-page--clean{gap:34px}.help-center-hero--clean{grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);padding:42px;background:linear-gradient(135deg,#f0f8f4 0%,#fff 52%,#fff4df 100%);overflow:hidden;position:relative}.help-center-hero--clean:after{content:"?";position:absolute;right:38%;bottom:-78px;font-size:260px;font-weight:950;color:rgba(19,124,89,.045);pointer-events:none}.help-center-hero__copy,.help-search--hero{position:relative;z-index:1}.help-center-hero__copy>p:not(.eyebrow){max-width:720px;font-size:1.08rem;line-height:1.65}.help-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.help-search--hero small{display:block;margin-top:10px;color:#61716b;line-height:1.4}.help-section-heading{display:flex;justify-content:space-between;gap:18px;align-items:end}.help-section-heading h2,.help-section-heading p{margin:.15rem 0}.help-section-heading>div>p:not(.eyebrow){color:#61716b}.help-quick-section,.help-topic-section,.help-search-results{display:grid;gap:18px;scroll-margin-top:96px}.help-quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.help-quick-card{display:grid;grid-template-columns:48px minmax(0,1fr) 28px;gap:14px;align-items:center;padding:18px 20px;border:1px solid #dbe7e2;border-radius:20px;background:#fff;text-decoration:none;box-shadow:0 8px 24px rgba(23,56,45,.045);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.help-quick-card:hover{transform:translateY(-2px);border-color:#9fcbbb;box-shadow:0 14px 32px rgba(23,56,45,.08)}.help-quick-card__number{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:#edf7f3;color:#137c59;font-weight:950}.help-quick-card strong,.help-quick-card small{display:block}.help-quick-card small{margin-top:5px;color:#61716b;line-height:1.45}.help-quick-card__arrow{font-size:1.4rem;font-weight:900;color:#137c59}.help-topic-groups{display:grid;gap:12px}.help-topic-group{border:1px solid #dbe7e2;border-radius:22px;background:#fff;overflow:hidden;box-shadow:0 6px 20px rgba(23,56,45,.035)}.help-topic-group>summary{display:grid;grid-template-columns:52px minmax(0,1fr) auto 28px;gap:14px;align-items:center;padding:18px 20px;cursor:pointer;list-style:none}.help-topic-group>summary::-webkit-details-marker{display:none}.help-topic-group__icon{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#137c59;color:#fff;font-size:1.2rem;font-weight:950}.help-topic-group__text strong,.help-topic-group__text small{display:block}.help-topic-group__text strong{font-size:1.08rem}.help-topic-group__text small{margin-top:4px;color:#61716b;line-height:1.4}.help-topic-group__count{white-space:nowrap;padding:7px 10px;border-radius:999px;background:#f0f7f4;color:#365b4f;font-weight:750;font-size:.86rem}.help-topic-group__chevron{font-size:1.25rem;transition:transform .16s ease}.help-topic-group[open] .help-topic-group__chevron{transform:rotate(180deg)}.help-topic-group__body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 18px 18px}.help-category-compact{border-radius:18px;background:#f7faf8;border:1px solid #e1ebe7;padding:16px;scroll-margin-top:96px}.help-category-compact__heading{display:flex;gap:11px;align-items:center;margin-bottom:10px}.help-category-compact__heading>span{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#fff;border:1px solid #dbe7e2;color:#137c59;font-weight:900}.help-category-compact__heading h3,.help-category-compact__heading small{margin:0}.help-category-compact__heading small{color:#6b7974}.help-category-compact__links{display:grid}.help-category-compact__links a{display:flex;justify-content:space-between;gap:10px;padding:10px 2px;border-top:1px solid #e1ebe7;text-decoration:none;font-weight:720}.help-category-compact__links a span:last-child{color:#137c59;font-weight:950}.help-article-card--compact{min-height:155px}.help-card-kicker{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#137c59;font-weight:850}.help-support-strip--clean{border-radius:28px;padding:30px;background:linear-gradient(135deg,#163c31,#0d2f27)}.help-support-strip--clean .eyebrow{color:#bde3d4}.help-article-hero--clean{grid-template-columns:auto minmax(0,1fr) auto;padding:30px}.help-article-screenshot-block{display:grid;gap:10px}.help-article-screenshot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px;align-items:start}.help-article-screenshot-grid.is-single{grid-template-columns:minmax(0,720px);justify-content:center}.help-article-screenshot{margin:0;padding:10px;border:1px solid #dbe7e2;border-radius:22px;background:#fff;box-shadow:0 12px 32px rgba(23,56,45,.055)}.help-article-screenshot a{display:block}.help-article-screenshot img{display:block;width:100%;max-height:720px;object-fit:contain;border-radius:15px;background:#f3f7f5}.help-article-screenshot-caption{margin:0;color:#66756f;font-size:.9rem;text-align:center}.help-article-layout--clean{grid-template-columns:minmax(0,1fr) 310px}.help-content-heading{display:flex;gap:12px;align-items:center;margin-bottom:14px}.help-content-heading>span{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:#edf7f3;color:#137c59;font-weight:950}.help-content-heading h2,.help-content-heading p{margin:0}.help-aside-card,.help-aside-tip{display:grid;gap:11px;padding:20px;border-radius:20px}.help-aside-card{background:#f1f8f5}.help-aside-tip{background:#fff7e7;border:1px solid #f0dfb6}.help-aside-tip p{margin:0;line-height:1.55;color:#66583c}
@media(max-width:900px){.help-center-hero--clean,.help-article-hero--clean,.help-article-layout--clean{grid-template-columns:1fr}.help-topic-group__body{grid-template-columns:1fr}.help-article-hero--clean .button{width:100%}}
@media(max-width:680px){.help-center-hero--clean{padding:24px}.help-center-hero--clean:after{display:none}.help-quick-grid{grid-template-columns:1fr}.help-topic-group>summary{grid-template-columns:46px minmax(0,1fr) 24px;padding:15px}.help-topic-group__count{display:none}.help-topic-group__icon{width:42px;height:42px}.help-topic-group__body{padding:0 12px 12px}.help-quick-card{grid-template-columns:42px minmax(0,1fr) 22px;padding:15px}.help-section-heading{align-items:stretch;flex-direction:column}.help-article-screenshot{padding:8px;border-radius:18px}.help-article-screenshot img{border-radius:13px}}

/* RoadCache V9.5 - campagnes : création repliable, statistiques avancées et texte enrichi */
.campaign-create-panel{overflow:hidden}.campaign-create-summary{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:18px 20px;cursor:pointer;list-style:none}.campaign-create-summary::-webkit-details-marker{display:none}.campaign-create-summary h2,.campaign-create-summary p{margin:.15rem 0}.campaign-create-summary>div>p:not(.eyebrow){color:#61716b}.campaign-create-panel[open] .campaign-create-summary{border-bottom:1px solid #e2ebe7}.campaign-create-panel[open] .campaign-create-summary>.button{opacity:.65}.campaign-create-content{padding:20px}.roadcache-rich-source{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}.roadcache-rich-editor{min-height:190px;background:#fff}.roadcache-rich-editor .ql-editor{min-height:190px;font-size:1rem;line-height:1.6;color:#193b32}.roadcache-rich-editor .ql-editor h2{font-size:1.35rem;margin:.8rem 0 .45rem}.roadcache-rich-editor .ql-editor h3{font-size:1.15rem;margin:.7rem 0 .35rem}.roadcache-rich-editor .ql-editor p{margin:.4rem 0}.ql-toolbar.ql-snow{border-color:#cbdad4!important;border-radius:14px 14px 0 0;background:#f7faf8}.ql-container.ql-snow{border-color:#cbdad4!important;border-radius:0 0 14px 14px}.campaign-rich-content{line-height:1.65}.campaign-rich-content>*:first-child{margin-top:0}.campaign-rich-content>*:last-child{margin-bottom:0}.campaign-rich-content h2{font-size:1.4rem;margin:1rem 0 .45rem}.campaign-rich-content h3{font-size:1.15rem;margin:.9rem 0 .4rem}.campaign-rich-content p{margin:.55rem 0}.campaign-rich-content ul,.campaign-rich-content ol{padding-left:1.4rem;margin:.6rem 0}.campaign-rich-content blockquote{margin:.8rem 0;padding:.7rem .9rem;border-left:4px solid #e89b35;background:#fff8e8;border-radius:0 10px 10px 0}.campaign-rich-content a{color:#137c59;text-decoration:underline}.campaign-metric-grid-advanced{grid-template-columns:repeat(4,minmax(0,1fr))}.campaign-metric-card small{display:block;margin-top:.3rem;color:#6b7b75;line-height:1.3}.campaign-metric-card.is-muted{background:#f7f7f4}.campaign-statistics .campaign-detail-box{margin-top:12px}
@media(max-width:1100px){.campaign-metric-grid-advanced{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.campaign-create-summary{align-items:flex-start;flex-direction:column}.campaign-create-summary>.button{width:100%;justify-content:center}.campaign-create-content{padding:14px}.campaign-metric-grid-advanced{grid-template-columns:1fr}}

/* RoadCache V9.6 - textarea + éditeur riche partagé */
textarea.roadcache-textarea{resize:vertical;min-height:74px;line-height:1.55;transition:border-color .15s ease,box-shadow .15s ease,height .08s ease}.roadcache-rich-shell{width:100%;margin-top:7px}.roadcache-rich-shell.is-compact .roadcache-rich-editor,.roadcache-rich-shell.is-compact .roadcache-rich-editor .ql-editor{min-height:108px}.roadcache-rich-shell .ql-toolbar.ql-snow{display:flex;flex-wrap:wrap;gap:2px;border-color:#cbdad4!important;border-radius:14px 14px 0 0;background:#f7faf8}.roadcache-rich-shell .ql-container.ql-snow{border-color:#cbdad4!important;border-radius:0 0 14px 14px;background:#fff}.roadcache-rich-editor{min-height:170px;background:#fff}.roadcache-rich-editor .ql-editor{min-height:170px;max-height:460px;overflow-y:auto;font-size:1rem;line-height:1.6;color:#193b32}.roadcache-rich-editor .ql-editor h2{font-size:1.32rem;margin:.8rem 0 .42rem}.roadcache-rich-editor .ql-editor h3{font-size:1.14rem;margin:.7rem 0 .35rem}.roadcache-rich-editor .ql-editor p{margin:.38rem 0}.roadcache-rich-counter{display:block;margin-top:5px;text-align:right;color:#73827d;font-size:.78rem}.roadcache-rich-fallback{position:static!important;left:auto!important;width:100%!important;height:auto!important;opacity:1!important;pointer-events:auto!important}.roadcache-rich-content{line-height:1.62;overflow-wrap:anywhere}.roadcache-rich-content>*:first-child{margin-top:0}.roadcache-rich-content>*:last-child{margin-bottom:0}.roadcache-rich-content p{margin:.42rem 0}.roadcache-rich-content h2{font-size:1.28rem;margin:.85rem 0 .42rem}.roadcache-rich-content h3{font-size:1.1rem;margin:.72rem 0 .35rem}.roadcache-rich-content ul,.roadcache-rich-content ol{padding-left:1.45rem;margin:.55rem 0}.roadcache-rich-content blockquote{margin:.65rem 0;padding:.58rem .8rem;border-left:4px solid #e89b35;background:#fff8e8;border-radius:0 10px 10px 0}.roadcache-rich-content a{color:#137c59;text-decoration:underline}.message-rich-content{max-width:100%}@media(max-width:700px){.roadcache-rich-shell .ql-toolbar.ql-snow{padding:6px}.roadcache-rich-shell .ql-toolbar .ql-formats{margin-right:4px}.roadcache-rich-editor .ql-editor{max-height:360px}}

/* RoadCache V9.7 - participants : tableau de suivi + campagnes compactes */
.campaign-tools-collapse{margin:0 22px 16px;border:1px solid #dce6e2;border-radius:15px;background:#fbfdfc;overflow:hidden}.campaign-tools-collapse>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;cursor:pointer;list-style:none;color:#193b32}.campaign-tools-collapse>summary::-webkit-details-marker{display:none}.campaign-tools-collapse>summary span{color:#6f817a;font-size:.84rem}.campaign-tools-collapse[open]>summary{border-bottom:1px solid #e6eeeb;background:#f6faf8}.campaign-tools-collapse-content{padding-top:12px}.campaign-description-toggle{margin-top:12px;border:1px solid #dce7e3;border-radius:13px;background:#fff;overflow:hidden}.campaign-description-toggle>summary{padding:10px 12px;cursor:pointer;color:#137c59;font-weight:850}.campaign-description-toggle .campaign-description{margin:0;padding:12px;border-top:1px solid #e7efec;background:#fff}.participant-list-panel{margin:1rem 0;padding:18px;scroll-margin-top:92px}.participant-list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px}.participant-list-head h2,.participant-list-head p{margin:.15rem 0}.participant-list-head p:not(.eyebrow){color:#62736d}.participant-list-count{display:inline-flex;padding:8px 12px;border-radius:999px;background:#edf7f3;color:#17634e;font-weight:850}.participant-status-table{min-width:980px}.participant-status-table th{white-space:nowrap}.participant-status-table td{vertical-align:top}.participant-status-table td strong,.participant-status-table td small{display:block}.participant-status-table td small{margin-top:3px;color:#6b7b75;line-height:1.35}.participant-row-attention{background:#fffaf0}.participant-status-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;border:1px solid #d5e2dd;background:#f5f9f7;color:#36584e;font-size:.78rem;font-weight:850;white-space:nowrap}.participant-status-pill.status-pending-review{background:#fff3d8;border-color:#efcc7a;color:#805400}.participant-status-pill.status-pending-confirmation{background:#fff7e8;border-color:#efd49b;color:#7a5a16}.participant-status-pill.status-accepted,.participant-status-pill.status-completed{background:#e7f7ef;border-color:#b7dfcd;color:#0c684b}.participant-status-pill.status-refused,.participant-status-pill.status-expired{background:#f8eeee;border-color:#e3c1c1;color:#8a3b3b}.participant-email-wait{color:#9a6500}.participant-email-ok{color:#0b7855}.participant-inline-action{margin-top:7px}.participant-small-button,.participant-open-button{min-height:34px!important;padding:7px 10px!important;font-size:.82rem!important}.participant-request-detail{padding:0;overflow:hidden}.participant-request-summary{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 18px;cursor:pointer;list-style:none;background:#fbfdfc}.participant-request-summary::-webkit-details-marker{display:none}.participant-request-summary>div:first-child{display:grid;gap:2px}.participant-request-summary>div:first-child>strong{font-size:1.08rem;color:#13372e}.participant-request-summary>div:first-child>span{color:#4f655e}.participant-request-summary>div:first-child>small{color:#778780}.participant-request-summary-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.participant-summary-action{color:#137c59;font-weight:800;font-size:.84rem}.participant-request-detail[open] .participant-summary-action::after{content:' · réduire'}.participant-request-detail-body{padding:18px;border-top:1px solid #e5eeea}.participant-request-meta{display:none}.participant-request-detail[open] .participant-request-meta{display:block;margin-bottom:10px}.participant-action-widget{scroll-margin-top:90px}
@media(max-width:760px){.campaign-tools-collapse{margin:0 12px 14px}.campaign-tools-collapse>summary{align-items:flex-start;flex-direction:column}.participant-list-panel{padding:13px}.participant-request-summary{align-items:flex-start;flex-direction:column}.participant-request-summary-status{justify-content:flex-start}.participant-request-detail-body{padding:13px}}

/* RoadCache V9.9 - dossier participant : présentation plus claire, comportement inchangé */
.participant-request-detail[open]{border-color:#cddfd8;box-shadow:0 14px 34px rgba(20,64,51,.07)}
.participant-request-detail[open] .participant-request-summary{background:linear-gradient(135deg,#f4faf7,#fbfdfc)}
.participant-request-detail-body{background:linear-gradient(180deg,#fbfdfc 0,#fff 180px);display:grid;gap:16px}
.participant-request-meta{padding:16px 18px;border:1px solid #dce8e3;border-radius:16px;background:#fff;box-shadow:0 7px 20px rgba(23,56,45,.035)}
.participant-request-detail[open] .participant-request-meta{display:grid;gap:9px;margin-bottom:0}
.participant-request-meta p{margin:0}.participant-request-meta .tags{margin:0}
.participant-request-meta>p:first-child{font-size:1.03rem;color:#173b31}
.participant-membership-banner{margin:0!important;padding:14px 18px!important;border-radius:16px!important;box-shadow:none!important}
.participant-tracking-wrap{margin:0;border:1px solid #dce7e2;border-radius:17px;background:#fff;overflow:auto;box-shadow:0 8px 22px rgba(23,56,45,.035)}
.participant-tracking-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0}
.participant-tracking-table thead th{padding:13px 16px;background:#f1f7f4;color:#234b40;font-size:.8rem;text-transform:uppercase;letter-spacing:.045em;border-bottom:1px solid #dce7e2}
.participant-tracking-table tbody td{padding:12px 16px;vertical-align:middle;border-bottom:1px solid #edf2f0;line-height:1.38}
.participant-tracking-table tbody tr:last-child td{border-bottom:0}
.participant-tracking-table tbody tr:hover td{background:#fbfdfc}
.participant-tracking-table tbody td:first-child{font-weight:780;color:#203d35;width:31%}
.participant-tracking-table tbody td:nth-child(2){font-weight:850;color:#17684f;width:19%;white-space:nowrap}
.participant-tracking-table tbody td:nth-child(3){color:#526b63}
.participant-tracking-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px}
.participant-tracking-actions>div:first-child{flex:0 0 100%;font-weight:700;color:#36564d}
.participant-tracking-actions .inline-form{margin:0}
.participant-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:0}
.participant-action-card{align-content:start;padding:20px;border:1px solid #d9e6e1;border-radius:18px;background:#fff;box-shadow:0 9px 24px rgba(23,56,45,.045)}
.participant-action-card h3{margin:0;color:#173a31;font-size:1.18rem}
.participant-action-card .field-hint{margin:0;line-height:1.5}
.participant-action-card button{justify-self:start;width:auto;min-width:190px;border-radius:11px}
.participant-action-confirm{border-color:#b9ddcf;background:linear-gradient(145deg,#f2fbf7,#fff)}
.participant-action-confirm h3{color:#0b684d}
.participant-action-confirm:before{content:'E-mail de confirmation';display:inline-flex;width:max-content;max-width:100%;padding:5px 9px;border-radius:999px;background:#e1f4eb;color:#12664f;font-size:.73rem;font-weight:900;letter-spacing:.035em;text-transform:uppercase}
.participant-action-accept{border-color:#b9ddcf;background:linear-gradient(145deg,#f2fbf7,#fff)}
.participant-action-refuse{border-color:#ecd0cd;background:linear-gradient(145deg,#fff8f7,#fff)}
.participant-action-refuse h3{color:#842e2e}
.participant-action-card textarea,.participant-action-card select,.participant-action-card input[type="number"]{background:#fff}
.participant-action-card .toggle-line{padding:11px 12px;border:1px solid #eadfdd;border-radius:12px;background:rgba(255,255,255,.75)}
.participant-request-detail button.secondary{border-color:#b9d9cd;background:#fff;color:#126b50;box-shadow:0 7px 18px rgba(20,100,77,.08)}
.participant-request-detail button.secondary:hover{background:#f0f8f4;border-color:#8fc4b1;box-shadow:0 10px 24px rgba(20,100,77,.12)}
.participant-invitation-card{margin-top:0!important;padding:19px;border-color:#cee0da;background:linear-gradient(145deg,#f7fbfa,#fff)}
.participant-invitation-card h3{margin-top:0}
.participant-invitation-card form{margin-top:12px}
.participant-delete-zone{margin-top:0!important;padding:19px;border-color:#e8c8c5;background:linear-gradient(145deg,#fff8f7,#fff)}
.participant-delete-zone h3{margin:0 0 6px;color:#832f2f}
.participant-delete-zone .field-hint{max-width:900px;margin:.2rem 0 12px;color:#765c59}
.participant-delete-zone .danger{width:auto;min-width:180px;border-radius:11px;box-shadow:0 8px 20px rgba(151,47,47,.13)}
.participant-request-detail .tester-access-workflow{margin-top:0;background:linear-gradient(145deg,#f8fbfa,#fff);box-shadow:0 8px 22px rgba(23,56,45,.035)}
.participant-request-detail .tester-access-step{box-shadow:0 6px 16px rgba(23,56,45,.025)}
@media(max-width:900px){.participant-action-grid{grid-template-columns:1fr}.participant-action-card button{min-width:0}}
@media(max-width:620px){.participant-request-detail-body{gap:12px}.participant-request-meta{padding:14px}.participant-membership-banner{padding:12px 14px!important}.participant-action-card,.participant-invitation-card,.participant-delete-zone{padding:15px;border-radius:15px}.participant-action-card button,.participant-invitation-card button,.participant-delete-zone button{width:100%;justify-self:stretch}.participant-tracking-table{min-width:650px}}

/* RoadCache V9.11 - dossier participant : correction chevauchement éditeur/cartes */
.participant-action-grid{align-items:start}
.participant-action-card{min-width:0;height:auto;align-self:start;overflow:visible}
.participant-action-card>label,.participant-action-card fieldset{min-width:0}
.participant-action-card .roadcache-rich-shell{position:relative;z-index:0;min-width:0;max-width:100%;height:auto!important;align-self:start}
.participant-action-card .roadcache-rich-editor.ql-container,.participant-action-card .ql-container.ql-snow{height:auto!important;min-height:170px;max-width:100%;overflow:hidden}
.participant-action-card .roadcache-rich-editor .ql-editor{height:auto!important;min-height:170px;max-height:360px;overflow-y:auto}
.participant-action-card textarea.roadcache-rich-source{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;min-height:1px!important;margin:0!important;padding:0!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.participant-delete-zone{position:relative;z-index:1;clear:both}


/* RoadCache v9.12 - recommandation tablette pour le mode Suivi */
.help-device-recommendation{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;align-items:start;padding:18px 20px;border-radius:18px;background:linear-gradient(135deg,#eef8f4,#f8fcfa);border:1px solid #b9ddcf;box-shadow:0 8px 22px rgba(23,56,45,.05)}
.help-device-recommendation__icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:#137c59;color:#fff;font-size:1.35rem;font-weight:950}
.help-device-recommendation strong{display:block;margin:1px 0 5px;color:#103d30;font-size:1.05rem}
.help-device-recommendation p{margin:0;line-height:1.55;color:#334d45}
.help-device-recommendation small{display:block;margin-top:7px;color:#61716b;font-weight:700}
@media(max-width:620px){.help-device-recommendation{grid-template-columns:40px minmax(0,1fr);padding:15px}.help-device-recommendation__icon{width:40px;height:40px;border-radius:12px}}


/* RoadCache V9.14 - parcours participant visible et Google Play après création du compte */
.campaign-participant-path{margin:0 22px 14px;padding:13px 15px;border:1px solid #cfe1da;border-radius:15px;background:linear-gradient(135deg,#f4faf7,#fff)}
.campaign-participant-path__title{display:block;margin-bottom:9px;color:#234b40;font-size:.78rem;font-weight:900;letter-spacing:.055em;text-transform:uppercase}
.campaign-participant-path__steps{display:flex;align-items:stretch;gap:7px;flex-wrap:wrap}
.campaign-participant-path__steps span{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 9px;border:1px solid #d8e6e1;border-radius:11px;background:#fff;color:#49645b;font-size:.78rem;font-weight:780}
.campaign-participant-path__steps span:not(:last-child)::after{content:'›';margin-left:3px;color:#8aa299;font-weight:950}
.campaign-participant-path__steps b{display:inline-grid;width:21px;height:21px;place-items:center;border-radius:999px;background:#e5f4ed;color:#12664f;font-size:.72rem}
.participant-flow-state{display:grid;gap:2px;min-width:180px}.participant-flow-state strong{color:#12664f!important;font-size:.78rem}.participant-flow-state span{font-weight:780;color:#334f46}.participant-flow-state.is-done span{color:#0b7252}.participant-flow-state.is-stopped span{color:#8a3b3b}
.participant-flow-mini{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;background:#eef7f3;border:1px solid #cfe2da;color:#31594d;font-size:.76rem;font-weight:800;white-space:nowrap}.participant-flow-mini b{color:#0e6a4e}.participant-flow-mini.is-done{background:#e4f6ed;border-color:#b9dfce;color:#0b684d}.participant-flow-mini.is-stopped{background:#faeeee;border-color:#e5c8c8;color:#8a3b3b}
.tester-access-steps-six{grid-template-columns:repeat(3,minmax(0,1fr))}.tester-access-step.is-done{border-color:#b9ddcf;background:#f5fbf8}.tester-access-step.is-current{border-color:#e1c16e;background:#fffaf0;box-shadow:0 0 0 2px rgba(222,177,70,.08)}.tester-access-step.is-locked{opacity:.74;background:#f7f9f8}.tester-access-step.is-done .tester-step-number{background:#137c59;color:#fff}.tester-access-step.is-current .tester-step-number{background:#f0c65d;color:#614600}.tester-access-step.is-locked .tester-step-number{background:#e8edeb;color:#72817c}
@media(max-width:1000px){.tester-access-steps-six{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.campaign-participant-path{margin:0 12px 12px}.campaign-participant-path__steps{display:grid;grid-template-columns:1fr 1fr}.campaign-participant-path__steps span:not(:last-child)::after{display:none}.participant-flow-mini{white-space:normal}.tester-access-steps-six{grid-template-columns:1fr}}
@media(max-width:480px){.campaign-participant-path__steps{grid-template-columns:1fr}}

/* RoadCache - popup de vérification e-mail après inscription/participation */
.roadcache-email-verification-modal {
    width: min(620px, calc(100vw - 28px));
    max-height: min(760px, calc(100vh - 28px));
}
.roadcache-email-verification-body {
    display: grid;
    gap: 14px;
    padding: 0 22px 22px;
}
.roadcache-email-verification-body > p {
    margin: 0;
}
.roadcache-email-verification-icon {
    display: grid;
    place-items: center;
    width: 64px;
    height: 64px;
    margin: 2px auto 0;
    border-radius: 20px;
    background: rgba(29, 113, 184, .10);
    font-size: 34px;
}
.roadcache-email-verification-wait {
    margin: 0;
}
.roadcache-email-verification-wait p {
    margin: 5px 0 0;
}
.roadcache-email-verification-resend-form {
    gap: 7px;
}
.roadcache-email-verification-resend-form .button {
    width: 100%;
}
.roadcache-email-verification-resend-form .button:disabled {
    cursor: not-allowed;
    opacity: .55;
}
.roadcache-email-verification-resend-form .field-hint {
    margin: 0;
    text-align: center;
}
@media (max-width: 640px) {
    .roadcache-email-verification-body {
        padding: 0 16px 18px;
    }
}
.roadcache-email-verification-reminder-section {
    padding-top: 10px;
    padding-bottom: 0;
}
.roadcache-email-verification-reminder {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 0;
}
.roadcache-email-verification-reminder p {
    margin: 4px 0 0;
}
.roadcache-email-verification-reminder .button {
    flex: 0 0 auto;
}
@media (max-width: 700px) {
    .roadcache-email-verification-reminder {
        align-items: stretch;
        flex-direction: column;
    }
    .roadcache-email-verification-reminder .button {
        width: 100%;
    }
}

/* RoadCache v9.25 - suivi technique des campagnes */
.campaign-diagnostic-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;margin:1rem 0}
.campaign-diagnostic-summary{border:1px solid var(--line,#d7dce2);border-radius:14px;padding:.9rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.7rem;background:#fff}
.campaign-diagnostic-summary strong{font-size:1.6rem}.campaign-diagnostic-summary span{font-weight:700}
.campaign-diagnostic-legend{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.diag-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .58rem;font-size:.82rem;font-weight:800;border:1px solid transparent;white-space:nowrap}
.diag-green{background:#e9f8ef;border-color:#93d6aa;color:#165d2d}.diag-yellow{background:#fff8d9;border-color:#e8d16f;color:#765d00}.diag-orange{background:#fff0df;border-color:#e7ad67;color:#8b4d00}.diag-red{background:#ffe7e7;border-color:#e8a0a0;color:#8b2020}.diag-gray{background:#f0f2f4;border-color:#cbd1d8;color:#59616a}
.participant-diagnostic-table td{vertical-align:top}.participant-diagnostic-table td small{display:block;margin-top:.25rem;color:var(--muted,#6b7280)}
.diag-row-red td:first-child{box-shadow:inset 4px 0 0 #b42318}.diag-row-orange td:first-child{box-shadow:inset 4px 0 0 #d97706}.diag-row-yellow td:first-child{box-shadow:inset 4px 0 0 #d4a800}.diag-row-green td:first-child{box-shadow:inset 4px 0 0 #1b8a4b}.diag-row-gray td:first-child{box-shadow:inset 4px 0 0 #7b8794}
.diag-log-row td{background:#fafbfc}.diag-log-list{display:grid;gap:.5rem}.diag-log-item{display:grid;grid-template-columns:110px minmax(180px,280px) 1fr;gap:.65rem;align-items:start;padding:.6rem .7rem;border:1px solid var(--line,#d7dce2);border-radius:10px;background:#fff}.diag-log-item small{grid-column:2/4}.diag-log-error{border-left:4px solid #b42318}.diag-log-warning{border-left:4px solid #d97706}.diag-log-info{border-left:4px solid #1b8a4b}
.campaign-mode-selector{border:1px solid var(--line,#d7dce2);border-radius:14px;padding:1rem;margin:1rem 0}.participant-diagnostic-consent{border:1px solid var(--line,#d7dce2);border-radius:12px;padding:1rem}
@media(max-width:900px){.campaign-diagnostic-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.diag-log-item{grid-template-columns:1fr}.diag-log-item small{grid-column:auto}}

/* RoadCache v9.25 — sélecteur visuel du mode de campagne */
.campaign-mode-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem;margin:.45rem 0 .6rem}.campaign-mode-button{display:block;cursor:pointer}.campaign-mode-button>input{position:absolute;opacity:0;pointer-events:none}.campaign-mode-button>span{display:block;height:100%;padding:1rem;border:1px solid var(--border,#d7dee8);border-radius:14px;background:var(--surface,#fff);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.campaign-mode-button strong,.campaign-mode-button small{display:block}.campaign-mode-button small{margin-top:.35rem;line-height:1.4;opacity:.78}.campaign-mode-button>input:checked+span{border-color:currentColor;box-shadow:0 0 0 2px color-mix(in srgb,currentColor 18%,transparent);transform:translateY(-1px)}.campaign-mode-button>input:focus-visible+span{outline:2px solid currentColor;outline-offset:2px}

.campaign-diagnostic-issues{display:grid;gap:.6rem}.campaign-diagnostic-issue{display:grid;grid-template-columns:auto minmax(180px,1fr) auto;align-items:center;gap:.75rem;padding:.75rem .9rem;border:1px solid var(--border,#d7dee8);border-radius:12px}.campaign-diagnostic-issue.diag-row-red{border-left:4px solid #b42318}.campaign-diagnostic-issue.diag-row-orange{border-left:4px solid #dc6803}.campaign-diagnostic-issue.diag-row-yellow{border-left:4px solid #ca8a04}@media(max-width:720px){.campaign-diagnostic-issue{grid-template-columns:1fr}.campaign-diagnostic-issue .diag-pill{width:max-content}}


/* RoadCache v9.26 - accès direct aux logs techniques par participant */
.participant-row-actions{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.participant-direct-log-action{margin:.55rem 0 0}
.participant-log-button{white-space:nowrap}
.participant-diagnostic-table .diag-row.is-focused{outline:3px solid rgba(25,120,88,.28);outline-offset:-3px}
.participant-diagnostic-table .diag-row.is-focused td{background:rgba(25,120,88,.06)}
@media (max-width:760px){.participant-row-actions{align-items:stretch}.participant-row-actions>*{width:100%;text-align:center}}
/* RoadCache v9.28 - diagnostics multi-appareils par participant */
.diag-device-list{display:grid;gap:1rem}.diag-device-card{border:1px solid var(--line,#d7dce2);border-radius:14px;padding:.9rem;background:#fff}.diag-device-card.diag-row-red{border-left:5px solid #b42318}.diag-device-card.diag-row-orange{border-left:5px solid #dc6803}.diag-device-card.diag-row-yellow{border-left:5px solid #ca8a04}.diag-device-card.diag-row-green{border-left:5px solid #1b8a4b}.diag-device-card.diag-row-gray{border-left:5px solid #98a2b3}.diag-device-card h3{margin:0 0 .2rem}.diag-device-card .page-head{margin-bottom:.65rem}

/* V9.34 - securite des adresses participant */
.participant-contact-change-tools{display:grid;gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line,#dbe6e1)}
.participant-email-history-card .table-wrap{margin-top:.75rem}

/* RoadCache V9.44 - Détection POI / avis : affichage compact et lisible */
.verification-admin .stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(185px, 1fr));
    gap: 12px;
    margin: 16px 0 8px;
}
.verification-admin .stat-card {
    display: flex;
    min-height: 92px;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    padding: 16px 18px;
    border: 1px solid rgba(17, 86, 68, .16);
    border-radius: 14px;
    background: rgba(247, 252, 250, .96);
    box-shadow: 0 7px 20px rgba(18, 65, 53, .06);
}
.verification-admin .stat-card strong {
    display: block;
    font-size: 1.8rem;
    line-height: 1;
    color: #0b6b54;
}
.verification-admin .stat-card span {
    color: #385c53;
    line-height: 1.25;
}
.verification-admin .table-wrap {
    width: 100%;
    overflow-x: auto;
    border: 1px solid rgba(17, 86, 68, .13);
    border-radius: 12px;
    background: #fff;
}
.verification-admin .table-wrap table {
    min-width: 880px;
    margin: 0;
}
.verification-admin .table-wrap th,
.verification-admin .table-wrap td {
    padding: 11px 12px;
    vertical-align: top;
}
.verification-admin .verification-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}
.verification-admin .verification-count {
    flex: 0 0 auto;
    padding: 7px 11px;
    border-radius: 999px;
    background: #edf7f3;
    color: #155b49;
    font-weight: 700;
}
.verification-admin .verification-create-question,
.verification-admin .verification-question-item {
    border: 1px solid rgba(17, 86, 68, .18);
    border-radius: 12px;
    background: #fff;
    overflow: clip;
}
.verification-admin .verification-create-question {
    margin-top: 14px;
    background: #f7fbf9;
}
.verification-admin .verification-create-question > summary,
.verification-admin .verification-question-item > summary {
    cursor: pointer;
    list-style: none;
}
.verification-admin .verification-create-question > summary::-webkit-details-marker,
.verification-admin .verification-question-item > summary::-webkit-details-marker {
    display: none;
}
.verification-admin .verification-create-question > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
}
.verification-admin .verification-create-question > summary::after,
.verification-admin .verification-question-item > summary::after {
    content: '▾';
    color: #0d6b53;
    font-size: 1rem;
    transition: transform .15s ease;
}
.verification-admin details[open] > summary::after {
    transform: rotate(180deg);
}
.verification-admin .verification-create-question > summary span {
    color: #62766f;
    font-size: .9rem;
}
.verification-admin .verification-question-list {
    display: grid;
    gap: 9px;
    margin-top: 14px;
}
.verification-admin .verification-question-item > summary {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) auto 20px;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
}
.verification-admin .verification-question-main {
    min-width: 0;
}
.verification-admin .verification-question-main strong,
.verification-admin .verification-question-main small {
    display: block;
}
.verification-admin .verification-question-main strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.verification-admin .verification-question-main small {
    margin-top: 3px;
    color: #687b75;
}
.verification-admin .verification-question-badges {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 6px;
}
.verification-admin .verification-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 9px;
    border-radius: 999px;
    background: #eef3f1;
    color: #314d45;
    font-size: .82rem;
    font-weight: 700;
    white-space: nowrap;
}
.verification-admin .verification-badge.is-ok { background: #e4f6ee; color: #086044; }
.verification-admin .verification-badge.is-off { background: #f1f1f1; color: #666; }
.verification-admin .verification-badge.is-system { background: #e8eef8; color: #314f7d; }
.verification-admin .verification-badge.is-warning { background: #fff1d8; color: #80520b; }
.verification-admin .verification-question-body,
.verification-admin .verification-create-question > form {
    padding: 16px;
    border-top: 1px solid rgba(17, 86, 68, .12);
}
.verification-admin .verification-moderation-box {
    display: grid;
    gap: 12px;
    padding: 14px;
    border: 1px solid rgba(179, 118, 14, .24);
    border-radius: 12px;
    background: #fffaf0;
}
.verification-admin .verification-question-actions {
    margin-top: 10px;
}
.verification-admin .verification-question-actions small {
    color: #5d7069;
}
@media (max-width: 900px) {
    .verification-admin .verification-question-item > summary {
        grid-template-columns: 1fr 20px;
    }
    .verification-admin .verification-question-badges {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
    .verification-admin .verification-section-heading,
    .verification-admin .verification-create-question > summary {
        align-items: stretch;
        flex-direction: column;
    }
}
