/* Front-end only: fixed header, mobile menu, social bar, intro loader, reveals, portfolio tabs + tiles, lightbox. */

.gbs-site-header { position: fixed; top: 0; left: 0; right: 0; z-index: 50; margin: 0 !important; }
.admin-bar .gbs-site-header { top: var(--gbs-top, var(--wp-admin--admin-bar--height, 0px)); }
.gbs-site-footer { margin: 0 !important; }
.gbs-main { margin: 0 !important; }
.wp-block-post-content > .alignfull { margin-top: 0 !important; margin-bottom: 0 !important; }
[id] { scroll-margin-top: var(--hh, 76px); }
html { overflow-x: hidden; }

.wp-block-social-links.gbs-socialbar { position: fixed; top: calc(112px + var(--gbs-top, 0px)); right: 18px; z-index: 40; }

/* desktop: menu inline */
@media (min-width: 901px) {
  .gbs-nav .wp-block-navigation__responsive-container-open { display: none !important; }
  .gbs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: block !important; position: relative !important; inset: auto !important; width: auto !important; height: auto !important; padding: 0 !important; background: transparent !important; z-index: auto !important; overflow: visible !important; }
  .gbs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__responsive-container-close { display: none !important; }
  .gbs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__responsive-container-content { display: flex !important; padding: 0 !important; }
  .gbs-nav .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container { flex-direction: row !important; }
}

/* mobile: burger + full-screen menu */
@media (max-width: 900px) {
  .gbs-nav .wp-block-navigation__responsive-container-open { display: flex !important; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; border: 1px solid var(--gbs-line); background: transparent; color: var(--gbs-ink); }
  .gbs-nav .wp-block-navigation__responsive-container-open svg { width: 20px; height: 20px; }
  .gbs-nav .wp-block-navigation__responsive-container.is-menu-open { background: rgba(9, 9, 10, 0.985) !important; color: var(--gbs-ink) !important; padding: 0 !important; animation: gbs-menu-in .32s var(--gbs-ease) both; }
  .gbs-nav .is-menu-open .wp-block-navigation__responsive-close, .gbs-nav .is-menu-open .wp-block-navigation__responsive-dialog { height: 100%; display: flex; flex-direction: column; }
  .gbs-nav .is-menu-open .wp-block-navigation__responsive-container-content { flex: 1; justify-content: center !important; align-items: center !important; padding: 0 !important; }
  .gbs-nav .is-menu-open .wp-block-navigation__container { flex-direction: column; align-items: center !important; gap: 0 !important; }
  .gbs-nav .is-menu-open .wp-block-navigation-item { align-items: center !important; }
  .gbs-nav .is-menu-open .wp-block-navigation-item__content { font-size: 17px; letter-spacing: 0.12em; padding: 18px 24px !important; border: none !important; }
  .gbs-nav .is-menu-open .wp-block-navigation__responsive-container-close { top: 14px; right: 18px; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--gbs-line); color: var(--gbs-ink); }
  .wp-block-social-links.gbs-socialbar { top: calc(86px + var(--gbs-top, 0px)); right: 10px; gap: 6px; }
  .gbs-socialbar .wp-social-link a, .gbs-socialbar .wp-block-social-link-anchor { width: 28px; height: 28px; border-radius: 6px; }
  .gbs-socialbar svg { width: 13px; height: 13px; }
}
@keyframes gbs-menu-in { from { transform: translateX(100%); } to { transform: none; } }

/* home: section rhythm on desktop */
@media (min-width: 901px) {
  html:has(body.home) { scroll-snap-type: y proximity; }
  .gbs-services { padding-top: 72px !important; padding-bottom: 48px !important; scroll-snap-align: start; }
  .gbs-services .gbs-capgrid { margin-top: 30px !important; }
  .gbs-about { padding-top: 24px !important; padding-bottom: 96px !important; }
  .gbs-about.gbs-intro { padding-top: 96px !important; padding-bottom: 24px !important; }
  .gbs-about.gbs-about-page { padding-top: 150px !important; padding-bottom: 110px !important; }
  .gbs-contact { min-height: calc(100vh - var(--hh, 76px)); display: grid; align-content: center; padding-top: 40px !important; padding-bottom: 40px !important; scroll-snap-align: start; }
}

/* intro loader */
.gbs-loader { position: fixed; inset: 0; z-index: 300; display: flex; align-items: center; justify-content: center; background: var(--gbs-bg); transition: opacity 620ms var(--gbs-ease), visibility 620ms; }
html:not(.js) .gbs-loader, html.gbs-noloader .gbs-loader { display: none; }
.gbs-loader.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
.gbs-loader__mark { position: relative; }
.gbs-loader__row { display: flex; flex-direction: column; align-items: center; gap: 22px; }
.gbs-loader__row img { height: 40px; width: auto; display: block; }
.gbs-loader__row.is-dim img { filter: brightness(0.24); }
.gbs-loader__row span { font-size: 12px; font-weight: 800; letter-spacing: 0.34em; text-transform: uppercase; color: var(--gbs-ink); }
.gbs-loader__row.is-dim span { color: var(--gbs-muted); }
.gbs-loader__fill { position: absolute; inset: 0; overflow: hidden; clip-path: inset(0 100% 0 0); transition: clip-path 200ms linear; }
.gbs-loader__pct, .gbs-loader__tag { position: absolute; bottom: 28px; font-family: var(--gbs-mono); font-size: 11px; letter-spacing: 0.22em; color: var(--gbs-muted); text-transform: uppercase; }
.gbs-loader__pct { right: 30px; }
.gbs-loader__tag { left: 30px; }

/* reveal on scroll */
.js .gbs-reveal { opacity: 0; transform: translateY(26px); transition: opacity 0.8s ease, transform 0.8s var(--gbs-ease); }
.js .gbs-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .js .gbs-reveal { opacity: 1; transform: none; transition: none; } }

/* portfolio: tabs */
.gbs-tabs { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 16px; padding-right: 64px; border-bottom: 1px solid var(--gbs-line); margin-top: 60px !important; }
.gbs-tabs__list { display: flex; flex-wrap: wrap; gap: 8px clamp(24px, 3vw, 56px); }
.gbs-tab { display: inline-block; padding: 0 0 14px; margin-bottom: -1px; font-size: clamp(18px, 1.6vw, 26px); font-weight: 600; letter-spacing: -0.01em; line-height: 1; color: var(--gbs-dim); border-bottom: 2px solid transparent; transition: color .25s ease, border-color .25s ease; }
.gbs-tab:hover { color: var(--gbs-amber); border-bottom-color: var(--gbs-amber); }
.gbs-tab.is-active { color: var(--gbs-ink); border-bottom-color: var(--gbs-amber); }
.js .is-style-portfolio .is-style-category { display: none; margin-top: 76px !important; }
.js .is-style-portfolio .is-style-category.is-active { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; align-items: start; min-height: 60vh; align-content: start; }
.js .is-style-category > * { margin: 0 !important; }
.js .is-style-category > h1, .js .is-style-category > h2, .js .is-style-category > h3 { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; }
.js .is-style-category > p { grid-column: 1 / -1; }
@media (min-width: 901px) {
  .is-style-portfolio { padding-top: 96px !important; }
  .gbs-tabs { margin-top: 50px !important; }
  .js .is-style-portfolio .is-style-category { margin-top: 14px !important; }
  .js .is-style-portfolio .is-style-category.is-active { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
}
@media (max-width: 900px) { .gbs-tabs { padding-right: 40px; } }

/* portfolio: project tile (first image is the cover) */
.js .wp-block-gallery.is-style-project { display: block !important; position: relative; margin: 0 !important; padding: 0 !important; cursor: zoom-in; }
.js .wp-block-gallery.is-style-project > figure.wp-block-image { display: none !important; }
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type { display: block !important; position: relative; width: 100% !important; max-width: none !important; margin: 0 !important; aspect-ratio: 4 / 5; overflow: hidden; background: var(--gbs-bg); border: 1px solid var(--gbs-line); }
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type img { width: 100% !important; height: 100% !important; max-width: none; object-fit: cover !important; object-position: 50% 20%; transition: transform 1.1s var(--gbs-ease); }
.js .wp-block-gallery.is-style-project:hover > figure.wp-block-image:first-of-type img { transform: scale(1.04); }
.js .wp-block-gallery.is-style-project figcaption { display: none !important; }
.js .wp-block-gallery.is-style-project:focus-visible { outline: 1px solid var(--gbs-amber); outline-offset: 3px; }
@media (min-width: 901px) { .js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type { aspect-ratio: auto; height: clamp(150px, calc((100vh - 330px) / 2), 420px); } }
.gbs-badge { position: absolute; right: 12px; bottom: 12px; z-index: 1; padding: 8px 11px; background: rgba(9, 9, 10, 0.72); font-family: var(--gbs-mono); font-size: 10px; letter-spacing: 0.16em; line-height: 1; text-transform: uppercase; color: var(--gbs-ink); pointer-events: none; }

/* lightbox */
.gbs-lb { position: fixed; inset: 0; z-index: 200; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 18px; padding: 22px 26px 26px; background: rgba(9, 9, 10, 0.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.gbs-lb[hidden] { display: none; }
html.gbs-lb-open { overflow: hidden; }
.gbs-lb__head { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; font-family: var(--gbs-mono); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gbs-ink); }
.gbs-lb__close { background: transparent; border: 1px solid var(--gbs-line); color: var(--gbs-ink); padding: 9px 13px; cursor: pointer; font-family: var(--gbs-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; }
.gbs-lb__close:hover, .gbs-lb__nav:hover { border-color: var(--gbs-amber); color: var(--gbs-amber); }
.gbs-lb__stage { position: relative; display: grid; place-items: center; min-height: 0; touch-action: pan-y; }
.gbs-lb__img { display: block; width: 100%; height: 100%; object-fit: contain; user-select: none; -webkit-user-drag: none; }
.gbs-lb__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 46px; height: 62px; background: rgba(9, 9, 10, 0.7); border: 1px solid var(--gbs-line); color: var(--gbs-ink); font-size: 18px; cursor: pointer; }
.gbs-lb__prev { left: 0; }
.gbs-lb__next { right: 0; }
.gbs-lb__thumbs { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.gbs-lb__thumb { width: 96px; height: 62px; padding: 0; border: 1px solid #1c1a18; opacity: 0.5; background: #09090a center / cover no-repeat; cursor: pointer; transition: all .2s ease; }
.gbs-lb__thumb.is-on { border-color: var(--gbs-amber); opacity: 1; }
@media (max-width: 900px) {
  .gbs-lb { padding: 14px; }
  .gbs-lb__head { flex-wrap: wrap; gap: 10px; }
  .gbs-lb__thumb { width: 64px; height: 42px; }
}

/* lightbox fit fix */
.gbs-lb { height: 100vh; height: 100dvh; overflow: hidden; box-sizing: border-box; }
.admin-bar .gbs-lb { top: 32px; height: calc(100dvh - 32px); }
@media (max-width: 782px) { .admin-bar .gbs-lb { top: 46px; height: calc(100dvh - 46px); } }
.gbs-lb__stage { overflow: hidden; }
.gbs-lb .gbs-lb__img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: 100%; max-height: 100%; margin: 0; object-fit: contain; }
.gbs-lb__thumbs { flex-wrap: nowrap; overflow-x: auto; }
.gbs-lb__thumb { flex: 0 0 auto; }

/* lightbox swipe */
.gbs-lb .gbs-lb__img { transition: transform .22s ease-out; will-change: transform; }

/* portfolio: checkbox filter (replaces tabs) */
.gbs-filter { display: flex; flex-wrap: wrap; gap: 12px 28px; align-items: center; padding: 0 0 22px; border-bottom: 1px solid var(--gbs-line); margin-top: 60px !important; }
.gbs-check { position: relative; display: inline-flex; align-items: center; gap: 12px; min-height: 44px; cursor: pointer; user-select: none; font-size: clamp(17px, 1.4vw, 22px); font-weight: 600; letter-spacing: -0.01em; color: var(--gbs-dim); transition: color .2s ease; }
.gbs-check input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.gbs-check__box { flex: 0 0 auto; width: 20px; height: 20px; border: 1.5px solid currentColor; border-radius: 3px; display: grid; place-items: center; transition: background .2s ease, border-color .2s ease; }
.gbs-check__box::after { content: ""; width: 10px; height: 6px; border-left: 2px solid var(--gbs-black, #09090a); border-bottom: 2px solid var(--gbs-black, #09090a); transform: translateY(-1px) rotate(-45deg); opacity: 0; transition: opacity .15s ease; }
.gbs-check:hover { color: var(--gbs-ink); }
.gbs-check input:checked ~ .gbs-check__label { color: var(--gbs-ink); }
.gbs-check input:checked + .gbs-check__box { background: var(--gbs-amber); border-color: var(--gbs-amber); }
.gbs-check input:checked + .gbs-check__box::after { opacity: 1; }
.gbs-check input:focus-visible + .gbs-check__box { outline: 2px solid var(--gbs-amber); outline-offset: 3px; }
.js .is-style-portfolio .is-style-category.is-active { min-height: 0; }
.js .is-style-portfolio .is-style-category > h1, .js .is-style-portfolio .is-style-category > h2, .js .is-style-portfolio .is-style-category > h3 { position: static !important; width: auto; height: auto; clip: auto; clip-path: none; overflow: visible; margin: 0 0 6px !important; grid-column: 1 / -1; font-size: 12px; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gbs-amber); font-family: var(--wp--preset--font-family--dm-mono, monospace); }
.js .is-style-portfolio .is-style-category.is-active + .is-style-category.is-active { margin-top: 64px !important; }
@media (max-width: 760px) { .gbs-filter { gap: 4px 22px; margin-top: 40px !important; padding-bottom: 12px; } .js .is-style-portfolio .is-style-category.is-active + .is-style-category.is-active { margin-top: 44px !important; } }
/* portfolio: one continuous grid, no category labels */
.gbs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; align-items: start; margin-top: 14px !important; }
@media (min-width: 761px) { .gbs-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 40px !important; } }
.js .is-style-portfolio .gbs-grid .is-style-category { display: none !important; margin: 0 !important; min-height: 0 !important; }
.js .is-style-portfolio .gbs-grid .is-style-category.is-active { display: contents !important; }
.js .is-style-portfolio .gbs-grid .is-style-category > h1, .js .is-style-portfolio .gbs-grid .is-style-category > h2, .js .is-style-portfolio .gbs-grid .is-style-category > h3 { position: absolute !important; width: 1px; height: 1px; margin: -1px !important; padding: 0; overflow: hidden; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); border: 0; }
.js .is-style-portfolio .gbs-grid .is-style-category > p { grid-column: 1 / -1; }
/* portfolio tiles: fixed 5:4 */
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type { aspect-ratio: 5 / 4 !important; height: auto !important; }
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type img { width: 100% !important; height: 100% !important; object-fit: cover; }

/* service tiles: sentence descriptions */
.gbs-capgrid .is-style-tile .wp-block-cover__inner-container p { text-transform: none !important; letter-spacing: 0 !important; font-family: var(--wp--preset--font-family--instrument-sans, inherit) !important; font-size: 15px !important; line-height: 1.5 !important; max-width: 40ch; white-space: normal !important; text-wrap: pretty; color: var(--gbs-ink, #f2efec); }
@media (max-width: 760px) { .gbs-capgrid .is-style-tile .wp-block-cover__inner-container p { font-size: 14px !important; } }

/* services 4d: tall panels, numbered, dark fade */
.wp-block-columns.gbs-capgrid { counter-reset: gbs-svc; }
.gbs-capgrid > .wp-block-column { counter-increment: gbs-svc; }
.wp-block-cover.is-style-tile { aspect-ratio: 3 / 4; border: 0; padding: clamp(22px, 2vw, 30px) !important; }
.wp-block-cover.is-style-tile .wp-block-cover__image-background { object-position: 50% 25%; opacity: 1; }
.wp-block-cover.is-style-tile .wp-block-cover__background { background: linear-gradient(180deg, rgba(9,9,10,0) 40%, rgba(9,9,10,0.95) 88%) !important; }
.wp-block-cover.is-style-tile .wp-block-cover__inner-container { gap: 12px; padding-right: 0; }
.wp-block-cover.is-style-tile .wp-block-cover__inner-container::before { content: counter(gbs-svc, decimal-leading-zero); font-family: var(--gbs-mono); font-size: 12px; letter-spacing: 0.08em; color: var(--gbs-amber); }
.wp-block-cover.is-style-tile .wp-block-cover__inner-container::after { content: none; }
.wp-block-cover.is-style-tile h3 { font-size: clamp(22px, 2vw, 28px); font-weight: 600; letter-spacing: -0.025em; text-transform: none; }
.gbs-capgrid .is-style-tile .wp-block-cover__inner-container p { font-size: 15px !important; line-height: 1.55 !important; max-width: none; color: #d6d2ce !important; }
.wp-block-cover.is-style-tile:hover { outline: 1px solid var(--gbs-amber); outline-offset: -1px; }
@media (max-width: 760px) { .wp-block-cover.is-style-tile { aspect-ratio: 4 / 5; padding: 22px 20px !important; } .gbs-capgrid .is-style-tile .wp-block-cover__inner-container p { font-size: 14px !important; } }
/* services: fit whole section in one screen, no numbers */
.wp-block-cover.is-style-tile .wp-block-cover__inner-container::before { content: none !important; }
@media (min-width: 761px) {
  .wp-block-cover.is-style-tile { aspect-ratio: auto !important; height: clamp(360px, calc(100svh - 300px), 760px); min-height: 0 !important; }
  .gbs-services .gbs-capgrid { margin-top: 32px !important; }
}
/* header current state + non-clickable service tiles */
.gbs-nav a.is-current { color: var(--gbs-amber) !important; }
.gbs-nav .gbs-nav-cta a.is-current, .gbs-nav a.is-current.gbs-nav-cta { border-color: var(--gbs-amber) !important; }
.wp-block-cover.is-style-tile { cursor: default; }
.gbs-services .gbs-head2 { margin-bottom: 0 !important; }
/* portfolio filter: square dot instead of tick */
.gbs-check__box { background: transparent !important; border-color: currentColor !important; }
.gbs-check__box::after { width: 10px !important; height: 10px !important; border: 0 !important; background: var(--gbs-amber); transform: none !important; border-radius: 0; }
.gbs-check input:checked + .gbs-check__box { background: transparent !important; border-color: var(--gbs-amber) !important; }
/* services hover: blur bg, text grows and rises to top */
@media (hover: hover) and (min-width: 761px) {
  .wp-block-cover.is-style-tile .wp-block-cover__inner-container { align-self: stretch; height: 100%; display: flex !important; flex-direction: column; justify-content: flex-end; gap: 0 !important; }
  .wp-block-cover.is-style-tile .wp-block-cover__inner-container::before { content: "" !important; display: block; flex: 1 1 auto; transition: flex-grow .6s var(--gbs-ease, cubic-bezier(.2,.7,.2,1)); }
  .wp-block-cover.is-style-tile .wp-block-cover__inner-container > h3 { margin: 0 0 12px !important; transition: font-size .5s var(--gbs-ease, ease); }
  .wp-block-cover.is-style-tile .wp-block-cover__inner-container > p { transition: font-size .5s var(--gbs-ease, ease), color .4s ease; }
  .wp-block-cover.is-style-tile .wp-block-cover__image-background { transition: transform 1.1s var(--gbs-ease, ease), filter .6s ease, opacity .5s ease; }
  .wp-block-cover.is-style-tile:hover .wp-block-cover__image-background { filter: blur(10px) brightness(.4); transform: scale(1.08); }
  .wp-block-cover.is-style-tile:hover .wp-block-cover__inner-container::before { flex-grow: 0; }
  .wp-block-cover.is-style-tile:hover h3 { font-size: clamp(30px, 2.8vw, 44px); }
  .gbs-capgrid .wp-block-cover.is-style-tile:hover .wp-block-cover__inner-container p { font-size: clamp(17px, 1.3vw, 20px) !important; color: #f2efec !important; }
}
@media (prefers-reduced-motion: reduce) { .wp-block-cover.is-style-tile * { transition: none !important; } }
/* services hover fix: pin text box to full tile so it can rise */
@media (hover: hover) and (min-width: 761px) {
  .wp-block-cover.is-style-tile { position: relative !important; }
  .wp-block-cover.is-style-tile > .wp-block-cover__inner-container { position: absolute !important; inset: clamp(22px, 2vw, 30px) !important; width: auto !important; height: auto !important; max-width: none !important; margin: 0 !important; display: flex !important; flex-direction: column !important; justify-content: flex-start !important; z-index: 2; }
  .wp-block-cover.is-style-tile > .wp-block-cover__inner-container::before { content: "" !important; display: block !important; flex: 1 1 0 !important; min-height: 0; transition: flex-grow .6s cubic-bezier(.2,.7,.2,1) !important; }
  .wp-block-cover.is-style-tile:hover > .wp-block-cover__inner-container::before { flex-grow: 0.0001 !important; }
}
/* services hover: rise to vertical center */
@media (hover: hover) and (min-width: 761px) {
  .wp-block-cover.is-style-tile > .wp-block-cover__inner-container::after { content: "" !important; display: block !important; position: static !important; flex: 0.0001 1 0 !important; min-height: 0; transition: flex-grow .6s cubic-bezier(.2,.7,.2,1) !important; }
  .wp-block-cover.is-style-tile:hover > .wp-block-cover__inner-container::before, .wp-block-cover.is-style-tile:hover > .wp-block-cover__inner-container::after { flex-grow: 1 !important; }
}
/* portfolio: tighter top, show full cover image */
.is-style-portfolio > .is-style-eyebrow-line { display: none !important; }
@media (min-width: 901px) { .is-style-portfolio { padding-top: 104px !important; } }
.gbs-filter { margin-top: 0 !important; padding-bottom: 14px !important; }
.gbs-grid { margin-top: 20px !important; }
@media (max-width: 760px) { .gbs-grid { margin-top: 14px !important; } }
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type { aspect-ratio: 5 / 4 !important; height: auto !important; border: 0 !important; outline: 1px solid var(--gbs-line); outline-offset: -1px; background: #111110; }
.js .wp-block-gallery.is-style-project > figure.wp-block-image:first-of-type img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: contain !important; object-position: 50% 50% !important; transform: none !important; transition: filter .4s ease; }
.js .wp-block-gallery.is-style-project:hover > figure.wp-block-image:first-of-type img { filter: brightness(1.12); }
.js .wp-block-gallery.is-style-project:hover > figure.wp-block-image:first-of-type { outline-color: var(--gbs-amber); }
.gbs-badge { top: 12px !important; bottom: auto !important; }
/* mobile sharpness + smaller views badge */
.wp-block-cover.is-style-hero .wp-block-cover__image-background { filter: none !important; image-rendering: auto; }
@media (max-width: 760px) {
  .wp-block-cover .wp-block-cover__image-background, .wp-block-gallery.is-style-project img { transform: none !important; will-change: auto !important; filter: none !important; }
  .gbs-badge { top: 6px !important; right: 6px !important; padding: 4px 6px !important; font-size: 7.5px !important; letter-spacing: 0.1em !important; }
}
/* mobile hero: never upscale the 2560x1440 render (max 480 css px tall at 3x) */
@media (max-width: 760px) {
  .wp-block-cover.is-style-hero { min-height: 0 !important; height: min(88svh, 500px) !important; padding-top: 90px !important; padding-bottom: 24px !important; }
  .wp-block-cover.is-style-hero .wp-block-cover__image-background { object-position: 45% 30% !important; }
  .wp-block-cover.is-style-hero .wp-block-cover__inner-container { padding-bottom: 8px !important; }
}
/* fur tile: side-profile framing */
.wp-block-cover.is-style-tile img.wp-image-224 { object-position: 55% 35% !important; }

/* cookie notice + footer privacy link */
.gbs-cookie { position: fixed; left: 24px; bottom: 24px; z-index: 150; max-width: 420px; display: flex; align-items: center; gap: 20px; padding: 16px 18px 16px 20px; background: #111110; border: 1px solid var(--gbs-line, #2a2825); color: var(--gbs-ink, #f2efec); font-size: 14px; line-height: 1.5; opacity: 0; transform: translateY(12px); transition: opacity .3s ease, transform .3s ease; }
.gbs-cookie.is-in { opacity: 1; transform: none; }
.gbs-cookie.is-out { opacity: 0; transform: translateY(12px); }
.gbs-cookie p { margin: 0; color: var(--gbs-dim, #a5a19d); }
.gbs-cookie a { color: var(--gbs-ink, #f2efec); text-decoration: underline; text-underline-offset: 3px; }
.gbs-cookie a:hover { color: var(--gbs-amber); }
.gbs-cookie button { flex: 0 0 auto; min-height: 40px; padding: 0 18px; background: var(--gbs-amber); color: #09090a; border: 0; font-family: var(--gbs-mono, monospace); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; cursor: pointer; }
.gbs-cookie button:hover { filter: brightness(1.08); }
@media (max-width: 760px) { .gbs-cookie { left: 12px; right: 12px; bottom: 12px; max-width: none; font-size: 13px; gap: 14px; padding: 12px 12px 12px 16px; } }
.gbs-foot-legal a { color: inherit; text-decoration: none; }
.gbs-foot-legal a:hover { color: var(--gbs-amber); }
/* mobile hero: taller portrait, still above 2x density */
@media (max-width: 760px) {
  .wp-block-cover.is-style-hero { height: min(78svh, 640px) !important; }
}
/* mobile hero: fill screen, leave room for intro heading */
@media (max-width: 760px) {
  .wp-block-cover.is-style-hero { height: calc(100svh - 130px) !important; max-height: none !important; min-height: 420px !important; }
  .wp-block-cover.is-style-hero + * { padding-top: 26px !important; margin-top: 0 !important; }
  .wp-block-cover.is-style-hero + * > *:first-child { margin-top: 0 !important; }
}
/* mobile hero: nudge bear right to read as centered */
@media (max-width: 760px) { .wp-block-cover.is-style-hero .wp-block-cover__image-background { object-position: 41% 30% !important; } }

/* portfolio filter: pill buttons + mobile single column */
.gbs-filter { display: flex !important; flex-wrap: wrap; gap: 8px !important; align-items: center; padding: 0 0 18px !important; }
.gbs-pill { appearance: none; -webkit-appearance: none; background: transparent; border: 1px solid var(--gbs-line, #2a2825); color: var(--gbs-dim, #a5a19d); font-family: var(--gbs-mono, 'DM Mono', monospace); font-size: 12px; font-weight: 400; letter-spacing: 0.16em; text-transform: uppercase; line-height: 1; padding: 0 18px; min-height: 42px; border-radius: 0; cursor: pointer; transition: color .2s ease, border-color .2s ease; }
.gbs-pill:hover { color: var(--gbs-ink, #f2efec); border-color: #4a4743; }
.gbs-pill.is-on { color: var(--gbs-amber); border-color: var(--gbs-amber); }
.gbs-pill:focus-visible { outline: 2px solid var(--gbs-amber); outline-offset: 2px; }
@media (max-width: 760px) {
  .gbs-filter { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-left: calc(-1 * var(--gbs-pad, 16px)) !important; margin-right: calc(-1 * var(--gbs-pad, 16px)) !important; padding-left: var(--gbs-pad, 16px) !important; padding-right: var(--gbs-pad, 16px) !important; padding-bottom: 14px !important; }
  .gbs-filter::-webkit-scrollbar { display: none; }
  .gbs-pill { flex: 0 0 auto; font-size: 11px; letter-spacing: 0.14em; padding: 0 14px; min-height: 44px; }
  .gbs-grid { grid-template-columns: minmax(0, 1fr) !important; gap: 14px !important; }
  .gbs-badge { top: 10px !important; right: 10px !important; padding: 6px 9px !important; font-size: 9.5px !important; letter-spacing: 0.14em !important; }
}
/* mobile: pills fit one row, no floating social bar over portfolio */
@media (max-width: 760px) {
  .gbs-filter { display: grid !important; grid-template-columns: auto minmax(0, 1.25fr) minmax(0, 1.35fr) auto; gap: 6px !important; overflow: visible; margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
  .gbs-pill { padding: 0 10px; font-size: 10.5px; letter-spacing: 0.08em; white-space: nowrap; min-height: 42px; }
}
@media (max-width: 360px) { .gbs-pill { padding: 0 7px; font-size: 9.5px; letter-spacing: 0.05em; } }
/* mobile: compact pills that clear the social bar */
@media (max-width: 760px) {
  .gbs-filter { display: flex !important; flex-wrap: nowrap; gap: 6px !important; padding-right: 44px !important; overflow: visible; }
  .gbs-pill { flex: 0 0 auto; min-height: 34px; padding: 0 9px; font-size: 9.5px; letter-spacing: 0.1em; }
}
@media (max-width: 360px) { .gbs-pill { padding: 0 7px; font-size: 8.5px; letter-spacing: 0.06em; } }