/**
 * Header and footer chrome.
 *
 * The only global stylesheet in the theme; everything else is per-block CSS
 * loaded on demand.
 *
 * Every measurement here was read off the live Shopify site so the two match:
 * a 130x40 logo, a 600x44 search pill with a 2px green border and a 65px
 * radius holding a 60x34 round submit, and a 60px nav row ruled underneath.
 */

/* The checkmark every custom checkbox on the shop draws once checked — the
   price filter, the account pages. Global because this sheet is the one
   loaded on every page, and a checkbox can turn up on more than one of the
   sheets that load conditionally. */
:root {
	--gp-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E");
}

/* ---------- page ---------- */

/*
 * Keep the scrollbar's column reserved whether or not the page is scrollable.
 *
 * Every panel on the site that covers the page — the filter drawer, the cart
 * drawer, WooCommerce's gallery modal — locks the page behind it with
 * overflow: hidden on the body. That takes the scrollbar away for as long as
 * the panel is open and gives it back on close, and the 15px it occupies is
 * 15px the content did not have a moment earlier: at 991 the grid's cards go
 * 305 wide, then 310, then 305 again. Every card is laid out and repainted
 * twice, which is the flash as a drawer closes.
 *
 * Reserving the column permanently means locking the page changes nothing
 * about its width. Where scrollbar-gutter is not supported — Safari before
 * 18.2 — the behaviour is what it was.
 */
html { scrollbar-gutter: stable; }

/* ---------- header ---------- */

/* The header is a top-level group, so it picks up the root padding. That does
   not belong here: the bar and the nav row set their own. The block gap
   between the two rows is zeroed on the block itself — a rule here ties with
   core's on specificity and loses on source order.

   The shadow is what lifts the whole header off the page on the live site —
   the nav row itself carries only a hairline along its top edge, nothing
   underneath. */
.gp-header {
	/* Core gives any group with a background 1.25em 2.375em of padding. The
	   block half was already dropped here; the inline half was insetting the
	   whole header by 38px, which took the nav row's hairline with it — live
	   runs that line the full width of the window. The rows inside are a
	   centred 1280, and removing symmetric padding does not move a centred
	   fixed width, so only the line changes. */
	padding: 0;
	box-shadow: 0 1px 5px rgba(4, 4, 4, 0.1);
}


.gp-header__row {
	gap: var(--wp--preset--spacing--50);
}

.gp-header__logo { flex: none; margin: 0; }

.gp-header__logo img {
	display: block;
	inline-size: 130px;
	block-size: auto;
}

/* ---------- header search ---------- */

.gp-header__search {
	flex: 1 1 400px;
	max-inline-size: 600px;
	margin: 0;
}

.gp-header__search .wp-block-search__inside-wrapper {
	position: relative;
	padding: 0;
	border: 2px solid var(--wp--preset--color--brand-green);
	border-radius: 65px;
	background: var(--wp--preset--color--surface-alt);
}

.gp-header__search .wp-block-search__input {
	block-size: 40px;
	padding-inline: 20px 80px;
	border: 0;
	border-radius: 65px;
	background: transparent;
	font-size: var(--wp--preset--font-size--sm);
}

.gp-header__search .wp-block-search__input:focus { outline: none; }

/* Live's search pill does not mark focus: measured with the caret in the
   field, the border stays where it was and nothing is drawn around it. The
   ring we had was ours alone. */
.gp-header__search .wp-block-search__inside-wrapper:focus-within {
	outline: none;
}

.gp-header__search .wp-block-search__button {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-end: 6px;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 60px;
	block-size: 34px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 9999px;
	background: var(--wp--preset--color--brand-green);
	color: #fff;
	cursor: pointer;
}

/* The live search button holds its fill under the pointer. */

/* Core draws a filled magnifier; the live site uses a stroked one, so core's
   is hidden and the button paints the stroked glyph as a mask instead. */
.gp-header__search .wp-block-search__button svg { display: none; }

.gp-header__search .wp-block-search__button::after {
	content: "";
	inline-size: 18px;
	block-size: 18px;
	background: currentColor;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21 21-4.34-4.34"/><circle cx="11" cy="11" r="8"/></svg>') center / contain no-repeat;
}

/* ---------- navigation ---------- */

.gp-header__navbar {
	--gp-nav-height: 60px;
	border-block-start: 1px solid rgba(4, 4, 4, 0.08);
}

.gp-header__navrow {
	gap: var(--wp--preset--spacing--40);
	min-block-size: var(--gp-nav-height);
}

.gp-header__nav { flex: 1 1 auto; }

/* Column and row apart: 16px reads well between items on one line, but once
   the menu runs to two the same figure leaves a gap wider than the rows it
   separates. */
.gp-header__nav .wp-block-navigation__container {
	column-gap: var(--wp--preset--spacing--40);
	row-gap: var(--wp--preset--spacing--20);
}

.gp-header__nav .wp-block-navigation-item__content {
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--nav);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

/* Live dims the menu word to three-quarter ink under the pointer — it does
   not turn green, and it does not underline. */
.gp-header__nav .wp-block-navigation-item__content:hover {
	color: rgba(4, 4, 4, 0.75);
	text-decoration: none;
}

.gp-header__nav .current-menu-item > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--brand-green);
}

/* The bundles item is the one coloured entry on the live site, with a tag
   glyph ahead of the label. */
.gp-header__nav .gp-nav__bundle > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--brand-orange);
}

.gp-header__nav .gp-nav__bundle > .wp-block-navigation-item__content::before {
	content: "";
	display: inline-block;
	inline-size: 1.15em;
	block-size: 1.15em;
	margin-inline-end: 0.4em;
	vertical-align: -0.2em;
	background: currentColor;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z"/><circle cx="7.5" cy="7.5" r="1.5"/></svg>') center / contain no-repeat;
}

.gp-header__nav .wp-block-navigation__submenu-container {
	min-inline-size: 260px;
	padding-block: 0.5rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 8px;
	background: var(--wp--preset--color--surface);
	box-shadow: 0 10px 20px rgba(4, 4, 4, 0.12);
}

.gp-header__nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.5rem 1rem;
	white-space: normal;
}

/* A dropdown near the right edge would hang past it. Core leaves the panel in
   the layout while it is hidden, so that overflow widened the page even with
   the menu closed — a horizontal scrollbar on every tablet. The last two items
   are the ones close enough to the edge to need it, so their panels open
   leftward. */
.gp-header__nav .wp-block-navigation__container > .wp-block-navigation-item:nth-last-child(-n+2) .wp-block-navigation__submenu-container {
	inset-inline-start: auto;
	inset-inline-end: 0;
}

/* Inside the mobile overlay the submenu is part of the list, not a dropdown:
   the card, its rule and its shadow would be a panel floating in a panel. */
.gp-header__nav .is-menu-open .wp-block-navigation__submenu-container {
	min-inline-size: 0;
	padding-block: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.gp-header__nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding-inline: 0;
}

/* ---------- nav row, right-hand side ---------- */

.gp-header__navlinks {
	flex: none;
	gap: var(--wp--preset--spacing--40);
}

.gp-header__tracking { margin: 0; white-space: nowrap; }
.gp-header__find { margin: 0; }

.gp-header__tracking a,
.gp-header__find .gp-book-request__open {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	padding: 0;
	border: 0;
	background: none;
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--nav);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}

/* Live's two utility entries — order tracking and "বই খুঁজে পাচ্ছেন না?" —
   hold their ink and draw no rule under the pointer. */
.gp-header__tracking a:hover,
.gp-header__find .gp-book-request__open:hover {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

/* Nothing in the header underlines on hover on live, and theme.json gives
   every link that underline by default. The logo is a picture besides. */
.gp-header a:hover,
.gp-header .custom-logo-link:hover { text-decoration: none; }

.gp-header__tracking a::before,
.gp-header__find .gp-book-request__open::before {
	content: "";
	flex: none;
	inline-size: 20px;
	block-size: 20px;
	background: currentColor;
}

.gp-header__find .gp-book-request__open::before {
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>') center / contain no-repeat;
}

.gp-header__tracking a::before {
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="3" width="15" height="13"/><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"/><circle cx="5.5" cy="18.5" r="2.5"/><circle cx="18.5" cy="18.5" r="2.5"/></svg>') center / contain no-repeat;
}

/* Between here and the mobile layout the search shares the top row, as it does
   on the live site at tablet width — dropping it to its own row is what made
   our header a third taller than theirs. */
@media (max-width: 1100px) {
	.gp-header__search { flex-basis: 260px; }
}

@media (max-width: 640px) {
	.gp-header__row { flex-wrap: wrap; }

	/* Only once the top row is genuinely out of room does the search take one
	   of its own. */
	.gp-header__search { order: 3; flex-basis: 100%; max-inline-size: none; }
}

/* The live mobile header is one row — hamburger, logo, then the wishlist and
   cart — with the search below it. Ours has the hamburger in the nav row, a
   sibling of the bar, so on mobile that row is lifted out of the flow and
   pinned into the bar's left edge rather than restructured. Everything else
   in the nav row is already hidden at this width, so what is pinned is the
   hamburger alone. */
/*
 * The nav row's right-hand links — "can't find a book?" and order tracking —
 * leave at 1200px, which is where the live page drops them. Below that the
 * menu alone fills the row, and keeping them was what pushed the row onto a
 * second line all the way from 1199 down.
 *
 * Scoped through .gp-header to outrank the layout rule core emits for a flex
 * group, which is the same specificity and comes later.
 */
@media (max-width: 1199px) {
	.gp-header .gp-header__navlinks { display: none; }
}

/*
 * The navigation block's own overlay breakpoint.
 *
 * Core turns the hamburger off at 600px and renders the menu inline above
 * that; the live page keeps the hamburger up to 749px. The mobile header
 * below is built around a hamburger, so the two have to agree — with core's
 * 600 and the header's 782 the band between them drew a full fifteen-item
 * menu absolutely positioned over the logo and the search box.
 *
 * Only the two rules that differ are restated; .is-menu-open is styled
 * outside core's media query and already works at any width.
 */
@media (min-width: 600px) and (max-width: 749px) {
	.gp-header__nav .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }

	.gp-header__nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}

@media (max-width: 749px) {
	.gp-header { position: relative; }

	/* Centred on the header, not pinned 12px from its top: 12px happened to
	   match the logo's centre only at the one header height this was tuned
	   against. The header has grown since — the logo row alone is 40px — and
	   the hamburger stayed fixed relative to the header's edge while the logo
	   is centred relative to the header's height, so the two drifted apart.
	   Live centres its own toggle on the header the same way.

	   Centred with inset + margin, not a transform: this element wraps the
	   <nav> that also holds the full-screen mobile menu panel, which is
	   itself position: fixed so it can cover the viewport regardless of where
	   the toggle sits in the page. A transform on any ancestor becomes the
	   containing block for a fixed descendant — that's what a transform here
	   was doing to the open menu, boxing the fullscreen panel into this 24px
	   row instead of the screen.

	   block-size: fit-content is load-bearing, not decorative. The classic
	   inset:0 + margin:auto trick only centres a box whose own height is a
	   definite value — with height left as the default auto, the spec's
	   answer for an auto-margin in the block direction is 0, not half the
	   leftover space, and the element stretches to fill top to bottom
	   instead of centring. fit-content gives it that definite height without
	   hard-coding one, so it keeps tracking the toggle's real size.

	   Doubled, and margin !important: two of WordPress's own global-styles
	   rules also reach this element — a generated block-gap reset for its
	   parent's children, and core's own `:root :where(.is-layout-flow) >
	   :last-child`. The second one ties this rule's doubled specificity
	   exactly (a :where() block adds nothing, but :root and :last-child are
	   each a class-weight selector on their own), and which of two tied
	   rules wins is a question of source order — core's global styles print
	   at a point relative to this inline sheet that isn't this theme's to
	   fix, so the tie is avoided outright rather than chased through it. */
	.gp-header__navbar.gp-header__navbar {
		position: absolute;
		inset-block: 0;
		inset-inline-start: 12px;
		block-size: fit-content;
		margin-block: auto !important;
		z-index: 3;
		border-block-start: 0;
		padding-inline: 0;
	}

	.gp-header__navrow { min-block-size: 0; }

	/* Room for the pinned hamburger. Scoped through .gp-header to outrank
	   .has-global-padding, which core emits on this group and which was
	   winning at one class — the clearance came from the header's own inline
	   padding instead, so it disappeared the moment that was removed. */
	.gp-header .gp-header__bar { padding-inline-start: 56px; }

	.gp-header__logo img { inline-size: 110px; }
}

/* ---------- footer ---------- */

.gp-footer a {
	color: var(--wp--preset--color--on-dark);
	text-decoration: none;
}

.gp-footer a:hover { color: #fff; }

.gp-footer__columns { gap: var(--wp--preset--spacing--50); }

.gp-footer__logo { margin-block: 0 var(--wp--preset--spacing--40); }

.gp-footer__logo img { display: block; }

.gp-footer__heading {
	margin-block: 0 30px;
	color: #fff;
	font-size: 18px;
	font-weight: 600;
}

.gp-footer__links {
	list-style: none;
	margin: 0;
	padding: 0;
	line-height: 2.2;
}

.gp-footer__links a { font-weight: 600; }

/* Social icons sit in filled circles on the live site rather than as bare
   glyphs, which is not a style core's social-links block ships. */
.gp-footer__social { gap: 15px !important; }

.gp-footer__social .wp-block-social-link {
	inline-size: 32px;
	block-size: 32px;
	border-radius: 50%;
	background: #242424;
}

.gp-footer__social .wp-block-social-link-anchor {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 100%;
	block-size: 100%;
	padding: 0;
}

.gp-footer__social .wp-block-social-link-anchor svg {
	inline-size: 18px;
	block-size: 18px;
}

.gp-footer__whatsapp { margin-block-start: var(--wp--preset--spacing--40); }

.gp-footer__whatsapp a {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 10px 18px;
	border-radius: 8px;
	background: #004f3b;
	color: #fff;
}

.gp-footer__whatsapp a:hover { background: var(--wp--preset--color--highlight-green); }

.gp-footer__whatsapp a::before {
	content: "";
	flex: none;
	inline-size: 20px;
	block-size: 20px;
	background: currentColor;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"/></svg>') center / contain no-repeat;
}

.gp-footer__payments { margin-block: 0 var(--wp--preset--spacing--40); }

.gp-footer__rule {
	border: 0;
	border-block-start: 1px solid rgba(228, 228, 228, 0.16);
	opacity: 1;
}

.gp-footer__bottom { gap: var(--wp--preset--spacing--30); }

.gp-footer__bottom p { margin: 0; }

/* ---------- section titles ---------- */

/* The category row's heading carries an open-book glyph on the live site. It
   is decoration, so it is drawn as a mask on a pseudo-element rather than
   added to the heading's text. */
.gp-section__title--book {
	display: flex;
	align-items: center;
	gap: 10px;
}

.gp-section__title--book::before {
	content: "";
	flex: none;
	inline-size: 24px;
	block-size: 24px;
	background: currentColor;
	mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></svg>') center / contain no-repeat;
}


/* ---------- the narrow-screen search panel ---------- */

/*
 * Above the mobile breakpoint there is no panel. display:contents drops the
 * wrappers out of the box tree so the search block is still a flex item of the
 * bar, sitting exactly where the template put it — the script can move the
 * field into a panel at every width and let this decide whether that panel is
 * a panel or nothing at all.
 */
.gp-search-panel,
.gp-search-panel__inner { display: contents; }

.gp-search-panel__close,
.gp-header-actions__item--search,
/* The script adds these to the navigation at every width, because the same
   markup becomes the drawer when the overlay opens. Until it does, that markup
   is the desktop menu — where the drawer's logo and its plus buttons would
   simply be extra things in the row. */
.gp-drawer__logo,
.gp-drawer__toggle,
.gp-drawer__account { display: none; }

@media (max-width: 749px) {
	/* Scoped to the class the script adds, so nothing here applies until the
	   panel actually exists. */
	.gp-header--search-panel .gp-search-panel {
		display: block;
		position: fixed;
		inset-block-start: 0;
		inset-inline: 0;
		z-index: 99;
		background: var(--wp--preset--color--surface);
		box-shadow: 0 6px 16px rgba(4, 4, 4, 0.12);
		transform: translateY(-100%);
		visibility: hidden;
		transition:
			transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
			visibility 0s linear 300ms;
	}

	.gp-header--search-panel.is-search-open .gp-search-panel {
		transform: translateY(0);
		visibility: visible;
		transition:
			transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1),
			visibility 0s linear 0s;
	}

	.gp-header--search-panel .gp-search-panel__inner {
		display: flex;
		align-items: center;
		gap: 12px;
		box-sizing: border-box;
		min-block-size: 120px;
		padding: 20px 15px;
	}

	/* The bar gave the field a fixed basis, and under 640px a row of its own;
	   in the panel it is simply the whole width bar the cross. */
	.gp-header--search-panel .gp-search-panel .gp-header__search {
		flex: 1 1 auto;
		order: 0;
		min-inline-size: 0;
		max-inline-size: none;
		margin: 0;
	}

	.gp-header--search-panel .gp-search-panel__close {
		display: flex;
		flex: none;
		align-items: center;
		justify-content: center;
		inline-size: 36px;
		block-size: 36px;
		padding: 0;
		border: 0;
		background: none;
		color: var(--wp--preset--color--ink);
		cursor: pointer;
	}

	/* :not([hidden]) so the button stays put until the script reveals it — a
	   bare display would beat the attribute. */
	.gp-header-actions__item--search:not([hidden]) { display: flex; }
}

/* ---------- the menu drawer ---------- */

/*
 * The live drawer is a 320px panel sliding in from the left: the logo and a
 * close cross across the top, then the menu as full-width rows divided by
 * rules. Core's overlay is a full-screen sheet with the menu centred in it, so
 * what follows is that panel restated over it.
 *
 * Every selector is scoped through .gp-header__nav, which puts it one class
 * above core's own (0,2,0) rules on the same elements.
 */
/*
 * .is-menu-open is doubled throughout what follows. Core writes its overlay
 * rules as `.wp-block-navigation__responsive-container.is-menu-open:where(…) .x`
 * — (0,3,0), since :where() counts for nothing — which is exactly what
 * `.gp-header__nav .is-menu-open .x` comes to, and core's stylesheet ships
 * after this one. The repeat buys the one point that decides it.
 */
@media (max-width: 749px) {
	.gp-header__nav .wp-block-navigation__responsive-container.is-menu-open {
		inset-inline-end: auto;
		inline-size: 320px;
		max-inline-size: 85vw;
		padding: 0;
		background: var(--wp--preset--color--surface);
		box-shadow: 0 0 24px rgba(4, 4, 4, 0.18);
		/* An animation, not a transition: core gives the container display:none
		   when the menu is shut, so there is no box to transition from. This
		   covers the opening, which is the half anyone watches. */
		animation: gp-drawer-in 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
	}

	@keyframes gp-drawer-in {
		from { transform: translateX(-100%); }
		to { transform: translateX(0); }
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__responsive-close {
		max-inline-size: none;
		block-size: 100%;
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__responsive-dialog {
		display: flex;
		flex-direction: column;
		/* The overlay's 24px block gap belongs to a sheet with the menu floating
		   in the middle of it; here the top bar and the list meet at a rule. */
		gap: 0;
		block-size: 100%;
		margin: 0;
	}

	/* The top bar: the shop's mark, and the cross pinned opposite it. */
	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__logo {
		display: flex;
		align-items: center;
		flex: none;
		box-sizing: border-box;
		min-block-size: 89px;
		padding: 20px;
		border-block-end: 1px solid var(--wp--preset--color--border);
	}

	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__logo img {
		inline-size: 130px;
		block-size: auto;
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__responsive-container-close {
		inset-block-start: 30px;
		inset-inline-end: 20px;
		padding: 0;
		color: var(--wp--preset--color--ink);
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__responsive-container-content {
		display: block;
		flex: 1 1 auto;
		/* Core reserves 56px at the top for the close button floating over the
		   sheet. The button sits in the bar above now, so the list starts at the
		   rule under it. */
		padding: 0;
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	/* Rows, not a centred stack. */
	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__container {
		display: block;
		inline-size: 100%;
		gap: 0;
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
		position: relative;
		display: block;
		inline-size: 100%;
		border-block-end: 1px solid var(--wp--preset--color--border);
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation-item__content {
		display: block;
		padding: 15px 20px;
		font-size: 16px;
		font-weight: 400;
		line-height: 1;
	}

	/* The plus sits over the row's right-hand end rather than inside the link,
	   so the row itself stays one tap target for the page it points at. */
	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__toggle {
		display: flex;
		position: absolute;
		inset-block-start: 0;
		inset-inline-end: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		inline-size: 56px;
		block-size: 46px;
		padding: 0;
		border: 0;
		background: none;
		color: var(--wp--preset--color--ink);
		cursor: pointer;
	}

	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__toggle::before,
	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__toggle::after {
		content: "";
		position: absolute;
		inline-size: 14px;
		block-size: 2px;
		background: currentColor;
		transition: transform 200ms ease;
	}

	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__toggle::after { transform: rotate(90deg); }

	/* Open, the plus becomes a minus. */
	.gp-header__nav .is-menu-open.is-menu-open .is-drawer-open > .gp-drawer__toggle::after { transform: rotate(0deg); }

	/* Core leaves the submenu permanently open inside its overlay; here it is
	   what the plus controls. */
	.gp-header__nav .is-menu-open.is-menu-open .has-child > .wp-block-navigation__submenu-container { display: none; }

	.gp-header__nav .is-menu-open.is-menu-open .has-child.is-drawer-open > .wp-block-navigation__submenu-container {
		display: block;
		padding-block-end: 8px;
	}

	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		padding: 12px 20px 12px 30px;
		font-size: 15px;
	}

	/* The arrow core draws beside a parent item belongs to the dropdown, which
	   this is not. */
	.gp-header__nav .is-menu-open.is-menu-open .wp-block-navigation__submenu-icon { display: none; }
}

@media (max-width: 749px) {
	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__account {
		display: flex;
		align-items: center;
		gap: 10px;
		padding: 15px 20px;
		border-block-start: 1px solid var(--wp--preset--color--border);
		color: var(--wp--preset--color--ink);
		font-size: 16px;
		font-weight: 400;
		line-height: 1;
		text-decoration: none;
	}

	.gp-header__nav .is-menu-open.is-menu-open .gp-drawer__account svg {
		inline-size: 20px;
		block-size: 20px;
	}
}
