:root,
[data-bs-theme="light"]{
  --journey-ink:#332c0f;
  --journey-olive:#5f5c3b;
  --journey-fern:#7b7752;
  --journey-gold:#bcb893;
  --journey-sand:#f6f3e5;
  --journey-cream:#fffdf6;
  --journey-mist:rgba(188,184,147,.25);
  --journey-haze:rgba(95,92,59,.12);
}

[data-bs-theme="dark"]{
  --journey-ink:#f4eddd;
  --journey-olive:#d6caa8;
  --journey-fern:#b1a779;
  --journey-gold:#d8ca92;
  --journey-sand:#4b4635;
  --journey-cream:#3a3426;
  --journey-mist:rgba(181,166,120,.25);
  --journey-haze:rgba(214,202,167,.18);
}
.card{border:0;box-shadow:var(--rt-card-shadow);}
.hover-raise{transition:.12s transform,.12s box-shadow}
.hover-raise:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(0,0,0,.08)}
.object-fit-cover{object-fit:cover}
.book-gallery{
  --book-card-width:210px;
  --book-card-gap:1rem;
  display:grid;
  --book-cover-height:calc(var(--book-card-width,210px)*1.5);
  grid-template-columns:repeat(1,minmax(0,var(--book-card-width,210px)));
  justify-content:center;
  gap:var(--book-card-gap);
  margin:0 auto;
  padding:0;
}
.book-gallery__item{
  display:flex;
  justify-content:center;
}
.book-gallery-card{
  width:100%;
  max-width:var(--book-card-width);
  border-radius:1rem;
  border:1px solid var(--bs-border-color, #dee2e6);
  overflow:hidden;
  background-color:#d7cbb2;
  border-color:#c5b79d;
}
.book-gallery-card__cover{
  width:100%;
  height:var(--book-cover-height,315px);
  max-height:var(--book-cover-height,315px);
  aspect-ratio:2/3;
  object-fit:contain;
  background-color:rgba(0,0,0,.04);
  display:block;
}
.book-gallery-card__cover--placeholder{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0.75rem;
  text-align:center;
  color:var(--bs-secondary-color);
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.book-gallery-card__cover-placeholder-text{font-size:.75rem;}
.book-gallery-card__cover-link{display:block;}
.book-gallery-card__media{position:relative;}
.book-gallery-card__rating{
  position:absolute;
  top:0.75rem;
  left:0.75rem;
  pointer-events:none;
  z-index:1;
}
.book-gallery-card .card-body{
  padding:0.75rem 0.9rem 0.85rem;
  font-size:0.85rem;
  background-color:transparent;
}
.book-gallery-card .card-title{
  font-size:0.95rem;
}
.book-gallery-card .badge{
  font-size:0.7rem;
  font-weight:600;
  background-color:rgba(var(--bs-primary-rgb),.08) !important;
  color:var(--journey-olive);
}
.book-gallery-card .badge:not(:first-child){
  border:1px solid rgba(var(--bs-primary-rgb),.15);
}
.rating-badge{
  display:inline-flex;
  align-items:center;
  gap:0.25rem;
  font-weight:600;
  font-size:0.75rem;
  padding:0.35rem 0.6rem;
  border-radius:999px;
  background:rgba(29,31,34,.75);
  color:#fff;
  box-shadow:0 6px 18px rgba(0,0,0,.2);
}
.rating-badge .bi-star-fill{color:#ffd973;}
.line-clamp-2{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  text-overflow:ellipsis;
  word-break:break-word;
}
.book-gallery-card__actions .btn{
  white-space:normal;
}
.book-gallery-card__status{
  display:inline-flex;
  align-items:center;
  gap:0.35rem;
  font-weight:600;
  padding:0.5rem 0.75rem;
}
@media (min-width: 576px){
  .book-gallery{
    grid-template-columns:repeat(2,minmax(0,var(--book-card-width,210px)));
  }
}

@media (min-width: 768px){
  .book-gallery{
    grid-template-columns:repeat(3,minmax(0,var(--book-card-width,210px)));
  }
}

@media (min-width: 992px){
  .book-gallery{
    grid-template-columns:repeat(4,minmax(0,var(--book-card-width,210px)));
  }
}

@media (min-width: 1200px){
  .book-gallery{
    grid-template-columns:repeat(5,minmax(0,var(--book-card-width,210px)));
  }
}

body.books-page{
  --journey-ink:#332c0f;
  --journey-olive:#5f5c3b;
  --journey-fern:#7b7752;
  --journey-gold:#bcb893;
  --journey-sand:#f6f3e5;
  --journey-cream:#fffdf6;
  --journey-mist:rgba(188,184,147,.25);
  --journey-haze:rgba(95,92,59,.12);
  --book-card-width:210px;
  --book-card-gap:1rem;
  --book-cover-height:calc(var(--book-card-width,210px)*1.5);
  --book-gallery-card-bg:#fdf8f1;
  --book-gallery-card-border:#ecdfc8;
  --book-gallery-card-badge-bg:rgba(var(--bs-primary-rgb),.08);
  --book-gallery-card-badge-border:rgba(var(--bs-primary-rgb),.15);
  --book-gallery-card-status-bg:rgba(255,255,255,.65);
  --book-gallery-card-badge-color:var(--journey-olive);
  --book-gallery-card-rating-bg:rgba(36,33,28,.75);
  --genre-shelf-book-bg:transparent;
  --genre-shelf-book-shadow:none;
  --genre-shelf-rating-position:absolute;
  --genre-shelf-rating-top:1rem;
  --genre-shelf-rating-left:1rem;
  --genre-shelf-rating-pointer-events:none;
  --genre-shelf-rating-z-index:5;
  --genre-shelf-rating-font-weight:700;
  --genre-shelf-rating-font-size:.8rem;
  --genre-shelf-rating-line-height:1;
  --genre-shelf-rating-bg:rgba(36,33,28,.82);
  --genre-shelf-rating-color:#fff;
  --genre-shelf-rating-shadow:0 6px 18px rgba(0,0,0,.25);
  --genre-shelf-rating-icon:"\F586";
  --genre-shelf-rating-icon-font:"bootstrap-icons";
  --genre-shelf-rating-icon-gap:.25rem;
  --genre-shelf-rating-icon-color:#ffd973;
  --genre-shelf-rating-icon-size:.95em;
  --genre-shelf-rating-emphasis:#d7a958;
  --genre-shelf-rating-text-shadow:0 1px 0 rgba(0,0,0,.25);
  --genre-shelf-rating-meta-display:none;
  --genre-shelf-meta-bg:#e3c9a4;
  --genre-shelf-meta-color:#2b1a0f;
  --genre-shelf-meta-padding-block:.6rem;
  --genre-shelf-meta-padding-inline:1.25rem;
  --genre-shelf-meta-radius:.75rem;
  --genre-shelf-meta-shadow:0 6px 14px rgba(0,0,0,.12);
  --genre-shelf-meta-margin-inline:-1rem;
  --genre-shelf-book-padding:.75rem;
  --genre-shelf-book-title-size:.95rem;
  --genre-shelf-book-title-line-height:1.2;
  --genre-shelf-book-authors-size:.8rem;
  --genre-shelf-book-meta-margin-top:.15rem;
  --genre-shelf-book-meta-font-size:.8rem;
  --genre-shelf-list-gap:.9rem;
  --genre-shelf-list-padding-bottom:.6rem;
  --genre-shelf-list-column-size:minmax(170px,1fr);
  --genre-shelf-list-column-size-sm:minmax(170px,70%);
  --genre-shelf-list-column-size-xs:minmax(170px,80%);
}
.navbar .form-control{min-width:260px}

.books-hero{
  position:relative;
  border-radius:1.5rem;
  padding:2rem clamp(1.25rem,2vw,2.5rem);
  background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.18),rgba(var(--bs-primary-rgb),.05));
  border:1px solid rgba(var(--bs-primary-rgb),.2);
  box-shadow:var(--rt-card-shadow);
  display:flex;
  flex-direction:column;
  gap:1.5rem;
}
.books-hero__body{
  display:flex;
  flex-direction:column;
  gap:1rem;
}
.books-hero__title{
  font-size:clamp(1.5rem,3vw,2.25rem);
  font-weight:700;
}
.books-hero__subtitle{
  margin-bottom:0;
  color:var(--bs-body-color);
  opacity:.8;
}
.books-hero__actions{
  display:flex;
  flex-wrap:wrap;
  gap:0.75rem;
}
.books-hero__search .input-group-text{
  padding-left:1.25rem;
  padding-right:0.75rem;
  font-size:1.25rem;
}
.books-hero__search .form-control{
  box-shadow:none !important;
  padding:0.95rem 0.5rem;
  font-size:1.05rem;
}
.books-sort{
  border-bottom:1px solid var(--bs-border-color);
  margin-bottom:1rem;
}
.books-sort .nav-link{
  display:inline-flex;
  align-items:center;
  gap:0.35rem;
  border-radius:999px !important;
  background-color:transparent;
  color:var(--bs-body-color);
  padding:0.35rem 0.85rem;
  
  transition:background-color .12s ease,color .12s ease,box-shadow .12s ease;
}
.books-sort .nav-link:hover{background-color:rgba(var(--bs-primary-rgb),.08);color:var(--journey-olive);}
.books-sort .nav-link.active{
  background-color:rgba(var(--bs-primary-rgb),.15);
  color:var(--journey-olive);
  box-shadow:0 0 0 0.2rem rgba(var(--bs-primary-rgb),.15);
}
.books-empty-state{
  border-radius:1.25rem;
}

@media (min-width: 768px){
  .books-hero{
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
  }
  .books-hero__body{
    max-width:60%;
  }
}

/* Диаграмма прогресса чтения */
.reading-chart-card{
  border-radius:0.75rem;
  border:1px solid var(--bs-border-color, #dee2e6);
  background-color:var(--bs-body-bg);
  box-shadow:var(--rt-card-shadow);
  padding:1.5rem 1.25rem;
}
.reading-chart-card__canvas{
  position:relative;
    height:260px;
}
.reading-chart-card canvas{
  width:100% !important;
  height:100% !important;
}
.books-shelf-card{
  border:none;
  border-radius:1.5rem;
  background:transparent;
  box-shadow:none;
}

.books-shelf-card__body{
  position:relative;
  border-radius:1.5rem;
  padding:var(--books-shelf-body-padding,1.25rem 1rem 1.1rem);
  background:var(--book-gallery-card-bg,#fdf8f1);
  border:1px solid var(--book-gallery-card-border,#ecdfc8);
  background-image:var(--books-shelf-texture,none);
  background-repeat:repeat-x;
  background-size:cover;
  background-position:center bottom;
  overflow:hidden;
}

.books-shelf-card__body::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(160deg,rgba(255,255,255,.65),rgba(255,255,255,0));
  mix-blend-mode:screen;
  pointer-events:none;
}

[data-bs-theme="dark"] .books-shelf-card__body::before{
  background:linear-gradient(160deg,rgba(0,0,0,.45),rgba(0,0,0,.1));
  mix-blend-mode:normal;
}

.book-shelf-wrapper{position:relative;}

.book-shelf{
  display:flex;
  gap:1.5rem;
  overflow-x:auto;
  padding:0 0 2rem;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scroll-padding:0 3rem;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-x;
}

.book-shelf::before,
.book-shelf::after{
  content:"";
  flex:0 0 3rem;
  pointer-events:none;
}

.book-shelf::-webkit-scrollbar{height:8px;}

.book-shelf::-webkit-scrollbar-thumb{
  background-color:rgba(0,0,0,.18);
  border-radius:999px;
}

.book-item{
  position:relative;
  flex:0 0 clamp(240px,22vw,280px);
  display:flex;
  flex-direction:column;
  gap:.85rem;
  scroll-snap-align:start;
  scroll-snap-stop:always;
  text-align:left;
}

.book-item__media{
  position:relative;
  border-radius:1rem;
  overflow:hidden;
  box-shadow:0 1.25rem 1.75rem rgba(33,37,41,.14);
  border:3px solid rgba(255,255,255,.55);
  background:linear-gradient(135deg,rgba(255,255,255,.7),rgba(255,255,255,.25));
}

.book-item__cover{display:block;width:100%;aspect-ratio:2/3;background:rgba(0,0,0,.05);object-fit:contain;}
.book-item__cover-link{display:block;}
.book-item__cover--placeholder{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:1.25rem;
  text-transform:uppercase;
  font-weight:700;
  font-size:1.1rem;
  color:var(--journey-olive);
  background:linear-gradient(135deg,rgba(var(--bs-primary-rgb),.12),rgba(var(--bs-primary-rgb),.25));
}

.book-item__content{
  position:relative;
  z-index:1;
  padding:1.05rem 1rem 1.15rem;
  border-radius:1rem;
  background:#e3c9a4;
  border:1px solid rgba(0,0,0,.04);
  box-shadow:0 10px 28px rgba(33,37,41,.12);
  display:flex;
  flex-direction:column;
  gap:.65rem;
  min-height:180px;
  color:#2b1a0f;
}

.book-item__content::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:linear-gradient(140deg,rgba(255,255,255,.45),rgba(255,255,255,0));
  mix-blend-mode:screen;
  opacity:.55;
}

[data-bs-theme="dark"] .book-item__content{
  background:color-mix(in srgb,#e3c9a4 68%,#1d140d 32%);
  border-color:rgba(0,0,0,.35);
  box-shadow:0 10px 28px rgba(0,0,0,.35);
  color:#f8ecde;
}

[data-bs-theme="dark"] .book-item__content::before{
  background:linear-gradient(140deg,rgba(0,0,0,.35),rgba(0,0,0,.05));
  mix-blend-mode:normal;
  opacity:.6;
}

.book-item__title{font-size:1rem;font-weight:600;margin-bottom:0;}
.book-item__title a{color:inherit;text-decoration:none;}
.book-item__title a:hover,
.book-item__title a:focus-visible{color:var(--journey-olive);text-decoration:none;}

.book-item__authors{font-size:.85rem;color:rgba(43,26,15,.75);}
.book-item__meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;color:rgba(43,26,15,.65);}
.book-item__meta .text-muted{color:inherit!important;}

[data-bs-theme="dark"] .book-item__authors{color:rgba(255,241,228,.78);}
[data-bs-theme="dark"] .book-item__meta{color:rgba(255,241,228,.65);}

.book-item__genres{display:flex;flex-wrap:wrap;gap:.35rem;}
.book-item__genres .badge{
  font-size:.7rem;
  font-weight:600;
  background-color:var(--book-gallery-card-badge-bg)!important;
  color:var(--book-gallery-card-badge-color);
  border:1px solid var(--book-gallery-card-badge-border);
}

.book-item__actions{margin-top:auto;}
.book-item__actions .btn,
.book-item__actions .badge{width:100%;justify-content:center;}
.book-item__actions form{width:100%;}

.book-shelf__nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:2.75rem;
  height:2.75rem;
  border-radius:999px;
  border:none;
  background:rgba(255,255,255,.88);
  box-shadow:0 .75rem 1.5rem rgba(33,37,41,.15);
  display:none;
  align-items:center;
  justify-content:center;
  color:var(--journey-olive);
  cursor:pointer;
  transition:background .2s,color .2s,transform .2s;
  z-index:2;
}

.book-shelf__nav:hover:not(:disabled),
.book-shelf__nav:focus-visible:not(:disabled){
  background:rgba(255,255,255,.95);
  color:var(--journey-fern);
  transform:translateY(-50%) scale(1.05);
}

.book-shelf__nav:focus-visible{outline:3px solid rgba(var(--bs-primary-rgb),.25);outline-offset:3px;}
.book-shelf__nav:disabled{opacity:.4;cursor:default;box-shadow:none;}
.book-shelf__nav--prev{left:1.25rem;}
.book-shelf__nav--next{right:1.25rem;}
.book-shelf-wrapper--overflow .book-shelf__nav{display:inline-flex;}

@media (max-width:575.98px){
  .book-shelf{gap:1.15rem;scroll-padding:0 2rem;}
  .book-shelf::before,
  .book-shelf::after{flex-basis:2rem;}
  .book-item{flex-basis:220px;}
  .book-shelf__nav{width:2.5rem;height:2.5rem;}
  .book-shelf__nav--prev{left:.75rem;}
  .book-shelf__nav--next{right:.75rem;}
}

.rating-badge--overlay{
  position:absolute;
  top:8px;
  left:8px;
  z-index:2;
  pointer-events:none;
  background:rgba(36,33,28,.8);
}

[data-bs-theme="dark"] .rating-badge--overlay{background:rgba(0,0,0,.6);}

@media (max-width: 576px){
  .reading-chart-card{
    padding:1.25rem 1rem;
  }
  .reading-chart-card__canvas{
    height:220px;
    
  }
}


.marathon-hero{
  background-color:#62769a;
  color:#fff;
  border-radius:1.25rem;
  padding:2rem;
  box-shadow:var(--rt-card-shadow);
}

.marathon-hero a.btn-outline-light{
  border-color:#000000
  color:#fff;
}

.marathon-card{
  border:1px solid rgba(98,118,154,.2);
  box-shadow:var(--rt-card-shadow);
  border-radius:1rem;
}

.marathon-card__cover{
  height:220px;
  max-height:220px;
  object-fit:cover;
}

@media (min-width: 768px){
  .marathon-card__cover{
    height:260px;
    max-height:260px;
  }
}

.marathon-theme-badge{
  background-color:rgba(98,118,154,.15);
  color:#62769a;
  border-radius:999px;
  padding:0.2rem 0.75rem;
  font-size:0.75rem;
  font-weight:600;
}

.marathon-entry-list{
  display:flex;
  flex-direction:column;
  gap:0.75rem;
}

.marathon-entry{
  border:1px solid rgba(98,118,154,.18);
  border-radius:0.85rem;
  padding:0.75rem 1rem;
  background-color:#fff;
  box-shadow:0 6px 12px rgba(0,0,0,.04);
  --marathon-entry-cover-height: 144px;
}

.marathon-entry__content{
  display:flex;
  gap:0.75rem;
  align-items:flex-start;
}

.marathon-entry__cover{
  flex:0 0 calc(var(--marathon-entry-cover-height, 78px) * 2 / 3);
  width:calc(var(--marathon-entry-cover-height, 78px) * 2 / 3);
  height:var(--marathon-entry-cover-height, 78px);
  border-radius:0.5rem;
  overflow:hidden;
  background:linear-gradient(135deg, rgba(98,118,154,.18), rgba(98,118,154,.05));
  display:flex;
  align-items:center;
  justify-content:center;
}

.marathon-entry__cover-image{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.marathon-entry__cover-placeholder{
  font-size:1.35rem;
  color:rgba(98,118,154,.35);
}

.marathon-entry__details{
  flex:1 1 auto;
  min-width:0;
}

.marathon-entry__title{
  color:#2d3b55;
}

.marathon-entry__status{
  font-size:0.8rem;
  font-weight:600;
  color:#62769a;
}

.marathon-entry__progress{
  font-size:0.75rem;
  color:#4a5875;
}

.marathon-detail__cover{
  display:block;
  width:100%;
  height:100%;
  max-height:320px;
  object-fit:cover;
}

@media (min-width: 992px){
  .marathon-detail__cover{
    max-height:none;
  }
}

/* Виджет оценок звёздами */
.star-rating-field{
  display:inline-flex;
  flex-direction:column;
  gap:0.25rem;
}
.star-rating{
  display:inline-flex;
  gap:0.35rem;
}
.star-rating-btn{
  -webkit-appearance:none; appearance:none;
  background:none;
  border:0;
  color:var(--bs-border-color);
  cursor:pointer;
  padding:0;
  font-size:1.35rem;
  line-height:1;
  transition:transform .15s ease,color .15s ease;
}
.star-rating-btn:is(:hover,:focus-visible){
  transform:scale(1.1);
  color:var(--bs-warning);
}
.star-rating-btn.is-active{
  color:var(--bs-warning);
}
.star-rating-btn:focus-visible{
  outline:2px solid var(--journey-haze);
  outline-offset:2px;
}
.star-rating-field [data-rating-display]{
  min-width:7rem;
}
/* Улучшенный выбор множественных полей */
.multi-select-enhanced{
  max-height:20rem;
}
.multi-select-enhanced__list{
  max-height:14rem;
  overflow-y:auto;
}
.multi-select-enhanced__list .form-check{
  margin-bottom:0.25rem;
}

.multi-select-enhanced__list .form-check:last-child{
  margin-bottom:0;
}

/* Обложки и другие издания */
.additional-edition-cover{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  gap:0.25rem;
  width:72px;
  flex:0 0 auto;
  text-decoration:none;
  color:inherit;
}

.additional-edition-cover__image{
  width:100%;
  max-width:100%;
  aspect-ratio:2/3;
  object-fit:contain;
  background-color:rgba(0,0,0,.04);
  border-radius:0.75rem;
  border:1px solid transparent;
  box-shadow:var(--rt-card-shadow);
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}

.additional-edition-cover.is-active .additional-edition-cover__image,
.additional-edition-cover:focus-visible .additional-edition-cover__image,
.additional-edition-cover:hover .additional-edition-cover__image{
  transform:translateY(-2px);
  border-color:var(--journey-olive);
  box-shadow:0 0 0 0.2rem rgba(108,92,231,.15);
}

.book-cover-thumbnails{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1rem;
  max-width:var(--book-cover-width,240px);
  margin:0 auto;
}

.book-cover-thumbnails__viewport{
  width:100%;
}

.book-cover-thumbnails__page{
  display:flex;
  justify-content:center;
  gap:0.5rem;
}

.book-cover-thumbnails__controls{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:0.5rem;
}

.book-cover-thumbnails__dots{
  display:flex;
  align-items:center;
  gap:0.5rem;
}

.book-cover-thumbnails__dot{
  width:0.75rem;
  height:0.75rem;
  border-radius:999px;
  border:1px solid var(--bs-border-color,#dee2e6);
  background-color:var(--bs-body-bg);
  padding:0;
  transition:background-color .15s ease,border-color .15s ease;
}

.book-cover-thumbnails__dot.is-active{
  background-color:var(--journey-olive);
  border-color:var(--journey-olive);
}

.book-cover-thumbnails__dot:focus-visible{
  outline:2px solid var(--journey-haze);
  outline-offset:2px;
}

.edition-meta dt{
  font-weight:600;
  color:var(--bs-secondary-color);
}

.edition-meta dd{
  margin-bottom:0.25rem;
}

.edition-meta dd:last-child{
  margin-bottom:0;
}


.journey-map__canvas{
  position:relative;
  min-height:420px;
  background:linear-gradient(180deg,rgba(246,243,229,.85),rgba(255,253,246,.95));
  overflow:hidden;
  border-bottom:1px solid rgba(188,184,147,.28);
  aspect-ratio:3 / 2;
}

.journey-map__canvas::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:var(--journey-map-image, none);
  background-repeat:no-repeat;
  background-size:cover;
  background-position:center;
  opacity:.92;
  pointer-events:none;
  transition:opacity .3s ease;
  z-index:1;
}

.journey-map__image{
  display:block;
  width:100%;
  height:auto;
  pointer-events:none;
  opacity:.92;
}


.journey-map__marker{
  position:absolute;
  width:46px;
  height:46px;
  border-radius:50%;
  border:1px solid rgba(188,184,147,.4);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  color:var(--journey-ink);
  background:linear-gradient(150deg,rgba(255,253,246,.95),rgba(246,243,229,.85));
  box-shadow:0 10px 24px rgba(51,44,15,.18);
  transition:transform .18s ease, box-shadow .18s ease, opacity .18s ease;
  z-index:2;
}

.journey-map__marker:focus-visible,
.journey-map__marker:hover{
  transform:translateY(-4px) scale(1.03);
  box-shadow:0 14px 32px rgba(51,44,15,.2);
  outline:none;
}

.journey-map__marker::after{
  content:"";
  position:absolute;
  width:8px;
  height:8px;
  background:var(--journey-gold);
  border-radius:50%;
  bottom:-12px;
  box-shadow:0 6px 18px rgba(51,44,15,.22);
}

.journey-map__marker-index{
  font-size:1rem;
  text-shadow:0 1px 2px rgba(255,255,255,.65);
}

.journey-map__legend-badge{
  font-size:0.75rem;
  font-weight:600;
  color:var(--journey-ink);
}

.journey-map__popover{
  max-width:260px;
  font-size:0.85rem;
}

.journey-stage-list .list-group-item{
  padding:0.95rem 1rem;
  border-left:4px solid transparent;
  transition:border-color .2s ease, background-color .2s ease;
}

.journey-stage-list .list-group-item:focus-visible{
  outline:none;
  border-color:rgba(95,92,59,.35);
  box-shadow:0 0 0 0.25rem rgba(188,184,147,.35);
}

.journey-stage-list__status{
  font-size:0.75rem;
  font-weight:600;
}

.journey-stage-list__status--available{
  background:rgba(188,184,147,.2);
  color:var(--journey-olive);
  box-shadow:inset 0 0 0 1px rgba(95,92,59,.18);
}

.journey-stage-list__status--in_progress{
  background:rgba(123,119,82,.2);
  color:var(--journey-ink);
}

.journey-stage-list__status--completed{
  background:var(--journey-olive);
  color:#fff;
  box-shadow:0 6px 16px rgba(95,92,59,.22);
}

.terrain-harbor{background:linear-gradient(135deg,rgba(123,119,82,.92),rgba(95,92,59,.95));color:#fff;}
.terrain-heritage{background:linear-gradient(135deg,rgba(220,214,184,.95),rgba(160,150,96,.95));}
.terrain-inspiration{background:linear-gradient(135deg,rgba(255,253,246,.95),rgba(246,243,229,.85));}
.terrain-mystery{background:linear-gradient(135deg,rgba(123,119,82,.88),rgba(51,44,15,.9));color:#fff;}
.terrain-city{background:linear-gradient(135deg,rgba(188,184,147,.95),rgba(123,119,82,.95));}

.journey-map__marker.terrain-harbor::after{background:rgba(95,92,59,.85);}
.journey-map__marker.terrain-heritage::after{background:rgba(160,150,96,.85);}
.journey-map__marker.terrain-inspiration::after{background:rgba(188,184,147,.85);}
.journey-map__marker.terrain-mystery::after{background:rgba(71,67,41,.85);}
.journey-map__marker.terrain-city::after{background:rgba(123,119,82,.85);}

.journey-map__marker--available{opacity:.92;}
.journey-map__marker--in_progress{
  box-shadow:0 0 0 5px rgba(188,184,147,.28),0 10px 22px rgba(51,44,15,.22);
}
.journey-map__marker--completed{
  box-shadow:0 0 0 5px rgba(123,119,82,.28),0 10px 22px rgba(51,44,15,.22);
}
.journey-map__marker--completed .journey-map__marker-index{
  text-shadow:0 1px 2px rgba(255,255,255,.55);
}

.journey-stage-panel{
  max-width:420px;
}

.journey-stage-panel__status{
  background:rgba(188,184,147,.2);
  color:var(--journey-ink);
  font-weight:600;
}

.journey-stage-panel__status--in_progress{
  background:rgba(123,119,82,.25);
  color:var(--journey-ink);
}

.journey-stage-panel__status--completed{
  background:var(--journey-olive);
  color:#fff;
}

.journey-stage-panel__status--available{
  background:rgba(188,184,147,.25);
  color:var(--journey-olive);
}

.journey-stage-panel__form .form-select{min-width:100%;}

@media (max-width: 991.98px){
  .journey-map__canvas{min-height:360px;}
}

@media (max-width: 575.98px){
  .journey-map__canvas{min-height:320px;}
  .journey-map__marker{width:38px;height:38px;font-size:0.85rem;}
}


@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; animation:none !important; }
}

.genre-shelf-card__meta{
  background: #e3c9a4;
  padding: .6rem .8rem;
  border-radius: .75rem;
}