/* Labyrinth Book Designs — Portfolio system v1.2 */
:root {
  --lbpm-ink: #29232b;
  --lbpm-plum: #350b3d;
  --lbpm-purple: #5c0d6f;
  --lbpm-ivory: #f8f5f2;
  --lbpm-mauve: #a88eaa;
  --lbpm-gallery-gap: 14px;
}
.lbpm-portfolio, .lbpm-series-section { color: var(--lbpm-ink); font-family: inherit; }
/* Break out of Elementor's boxed content so the artwork can sit close to the viewport edges. */
.lbpm-portfolio.lbpm-wide { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); padding-inline: clamp(16px, 4.2vw, 76px); box-sizing: border-box; }
.lbpm-main-filters { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap: 5px 27px; padding: 0 0 15px; border-bottom: 1px solid rgba(53,11,61,.16); }
.lbpm-filter, .lbpm-sub-filter { appearance:none; border:0; background:transparent; color:var(--lbpm-ink); cursor:pointer; font:inherit; transition:color .22s ease, background .22s ease, border-color .22s ease; }
.lbpm-filter { position:relative; padding:12px 1px; font-size:12px; font-weight:650; letter-spacing:.085em; text-transform:uppercase; white-space:nowrap; }
.lbpm-filter::after { content:""; position:absolute; left:0; right:100%; bottom:0; height:2px; background:var(--lbpm-purple); transition:right .25s ease; }
.lbpm-filter:hover, .lbpm-filter.is-active { color:var(--lbpm-purple); }
.lbpm-filter:hover::after, .lbpm-filter.is-active::after { right:0; }
.lbpm-sub-filters { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; padding:13px 0 17px; }
.lbpm-sub-filters[hidden] { display:none !important; }
.lbpm-sub-filter { padding:7px 13px; border:1px solid rgba(53,11,61,.17); border-radius:2px; color:#685c69; font-size:11px; letter-spacing:.025em; }
.lbpm-sub-filter:hover, .lbpm-sub-filter.is-active { color:#fff; background:var(--lbpm-plum); border-color:var(--lbpm-plum); }
.lbpm-gallery-wrap { position:relative; }
.lbpm-gallery { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:var(--lbpm-gallery-gap); align-items:start; transition:opacity .22s ease; }
.lbpm-gallery.is-loading { opacity:1; pointer-events:auto; }
.lbpm-loading-status { position:absolute; z-index:2; top:12px; left:50%; transform:translateX(-50%); display:inline-flex; align-items:center; gap:9px; padding:7px 12px; border:1px solid rgba(199,122,221,.28); border-radius:999px; background:rgba(24,12,28,.78); color:#E8D9EF; font-size:10px; letter-spacing:.08em; white-space:nowrap; box-shadow:0 4px 18px rgba(0,0,0,.18); pointer-events:none; backdrop-filter:blur(8px); }
.lbpm-loading-status[hidden] { display:none !important; }
.lbpm-loading-spinner { width:11px; height:11px; border:1.5px solid rgba(232,217,239,.28); border-top-color:#D77BEA; border-radius:50%; animation:lbpm-spin .7s linear infinite; }
.lbpm-card.lbpm-entering { animation:lbpm-card-reveal .42s cubic-bezier(.2,.7,.25,1) both; }
@keyframes lbpm-spin { to { transform:rotate(360deg); } }
@keyframes lbpm-card-reveal { from { opacity:0; transform:translateY(9px); } to { opacity:1; transform:translateY(0); } }
.lbpm-card { display:block; width:100%; min-width:0; padding:0; border:0; margin:0; background:transparent; cursor:zoom-in; overflow:hidden; text-align:initial; }
.lbpm-card-frame { display:flex; width:100%; aspect-ratio:2/3; align-items:center; justify-content:center; overflow:hidden; background:transparent; }
.lbpm-card-image { display:block; width:100%; height:100%; object-fit:contain; object-position:center; transition:transform .45s cubic-bezier(.2,.65,.3,1), opacity .25s ease; }
.lbpm-card:hover .lbpm-card-image { transform:scale(1.018); }
.lbpm-card:focus-visible, .lbpm-filter:focus-visible, .lbpm-sub-filter:focus-visible, .lbpm-load-more:focus-visible { outline:2px solid var(--lbpm-purple); outline-offset:4px; }
.lbpm-load-more { display:flex; align-items:center; gap:13px; margin:42px auto 0; padding:12px 22px; border:1px solid var(--lbpm-plum); border-radius:2px; background:transparent; color:var(--lbpm-plum); font:inherit; font-size:10px; font-weight:650; letter-spacing:.15em; text-transform:uppercase; cursor:pointer; transition:background .2s ease,color .2s ease; }
.lbpm-load-more:hover { background:var(--lbpm-plum); color:#fff; }
.lbpm-load-more[hidden], .lbpm-empty[hidden] { display:none !important; }
.lbpm-load-more:disabled { opacity:.55; cursor:wait; }
.lbpm-empty { padding:48px 12px; text-align:center; color:#786b79; font:italic 16px Georgia,serif; }
.lbpm-lightbox { position:fixed; inset:0; z-index:999999; display:flex; align-items:center; justify-content:center; padding:55px 7vw; background:rgba(24,7,28,.965); opacity:1; animation:lbpm-fade-in .2s ease both; }
.lbpm-lightbox[hidden] { display:none !important; }
.lbpm-lightbox-image { display:block; max-width:min(100%,1100px); max-height:84vh; width:auto; height:auto; object-fit:contain; box-shadow:0 18px 70px rgba(0,0,0,.32); }
/* Smooth artwork reveal on lightbox open and previous/next navigation */
.lbpm-lightbox-image.lbpm-image-enter {
  animation: lbpm-image-reveal .48s cubic-bezier(.2,.72,.22,1) both;
  will-change: opacity, transform, filter;
}
@keyframes lbpm-image-reveal {
  0% { opacity: 0; transform: translateY(10px) scale(.985); filter: blur(3px); }
  65% { opacity: 1; filter: blur(.35px); }
  100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

.lbpm-lightbox-close, .lbpm-lightbox-prev, .lbpm-lightbox-next { position:absolute; border:0; padding:10px; background:transparent; color:#fff; cursor:pointer; font-family:Georgia,serif; font-weight:300; line-height:1; }
.lbpm-lightbox-close { top:15px; right:23px; font-size:42px; }
.lbpm-lightbox-prev, .lbpm-lightbox-next { top:50%; transform:translateY(-50%); font-size:52px; }
.lbpm-lightbox-prev { left:16px; } .lbpm-lightbox-next { right:16px; }
.lbpm-lightbox-count { position:absolute; bottom:18px; color:rgba(255,255,255,.7); font-size:10px; letter-spacing:.18em; }
.lbpm-modal-open { overflow:hidden; }
.lbpm-series-section { padding:50px 0; }
.lbpm-series-kicker { color:var(--lbpm-purple); text-align:center; font-size:9px; font-weight:700; letter-spacing:.22em; }
.lbpm-series-heading { margin:11px 0 30px; color:var(--lbpm-plum); text-align:center; font:400 clamp(27px,3.8vw,43px)/1.15 Georgia,serif; }
.lbpm-series-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.lbpm-series-card { width:100%; padding:17px; border:1px solid rgba(53,11,61,.14); background:var(--lbpm-ivory); text-align:left; cursor:pointer; transition:transform .25s ease,border-color .25s ease; }
.lbpm-series-card:hover { transform:translateY(-3px); border-color:var(--lbpm-mauve); }
.lbpm-series-covers { display:flex; min-height:175px; align-items:center; justify-content:center; gap:7px; }
.lbpm-series-covers img { width:22%; max-height:185px; aspect-ratio:2/3; object-fit:contain; box-shadow:0 4px 14px rgba(0,0,0,.1); }
.lbpm-series-meta { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:16px; padding-top:12px; border-top:1px solid rgba(53,11,61,.14); color:var(--lbpm-plum); font:18px Georgia,serif; }
.lbpm-series-meta small { color:#786b79; font:9px Georgia,serif; letter-spacing:.12em; white-space:nowrap; }
@keyframes lbpm-fade-in { from { opacity:0; } to { opacity:1; } }
@media (min-width:1440px) { .lbpm-gallery { grid-template-columns:repeat(5,minmax(0,1fr)); } }
@media (min-width:1025px) and (max-width:1439px) { .lbpm-gallery { grid-template-columns:repeat(4,minmax(0,1fr)); gap:13px; } }
@media (min-width:768px) and (max-width:1024px) { .lbpm-gallery { grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; } .lbpm-main-filters { gap:5px 17px; } .lbpm-filter { font-size:11px; } }
@media (max-width:767px) {
  .lbpm-portfolio.lbpm-wide { padding-inline:12px; }
  .lbpm-main-filters { justify-content:flex-start; flex-wrap:nowrap; overflow-x:auto; gap:20px; padding:0 1px 12px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
  .lbpm-main-filters::-webkit-scrollbar { display:none; }
  .lbpm-filter { flex:0 0 auto; font-size:10px; }
  .lbpm-sub-filters { justify-content:flex-start; flex-wrap:nowrap; overflow-x:auto; padding:11px 0 14px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
  .lbpm-sub-filters::-webkit-scrollbar { display:none; }
  .lbpm-sub-filter { flex:0 0 auto; white-space:nowrap; padding:7px 10px; font-size:10px; }
  .lbpm-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .lbpm-load-more { margin-top:30px; }
  .lbpm-series-section { padding:34px 0; }
  .lbpm-series-grid { grid-template-columns:1fr; gap:13px; }
  .lbpm-series-card { padding:13px; }
  .lbpm-series-covers { min-height:135px; }
  .lbpm-series-covers img { max-height:150px; }
  .lbpm-lightbox { padding:55px 10px; }
  .lbpm-lightbox-image { max-width:100%; max-height:78vh; }
  .lbpm-lightbox-prev { left:0; } .lbpm-lightbox-next { right:0; }
}
@media (prefers-reduced-motion: reduce) { .lbpm-lightbox-image.lbpm-image-enter { animation:none !important; } .lbpm-loading-spinner { animation:none !important; } .lbpm-card.lbpm-entering { animation:none !important; } .lbpm-portfolio *, .lbpm-series-section *, .lbpm-lightbox { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
