
		.ilb-address{display:inline;font-style:normal}
		.ilb-contact-link{text-decoration:none;border-bottom:2px solid #FFD400}
		.ilb-contact-link:hover{border-bottom-color:#111}
		/* Related places: styled here so the cards look right whatever theme
		   is active. A theme can still override any of it. */
		.ilb-related{margin:3rem 0 1rem}
		.ilb-related__title{margin:0 0 1.25rem;font-size:1.5rem;font-weight:800;line-height:1.2;letter-spacing:-.01em}
		/* Columns are capped so cards keep a sensible width instead of stretching
		   to fill whatever space the row has. */
		/* News tagged to this place. Sits above everything, because a closure
		   matters more than the opening hours it contradicts. */
		.ilb-placenews{margin:0 0 1.4em;padding:14px 18px 12px;background:#FFF9DB;border:1px solid #FFD400;border-radius:14px}
		.ilb-placenews__notice{margin:0 0 .5em;font-weight:800;font-size:1.02rem;color:#111}
		.ilb-placenews__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.35em}
		.ilb-placenews__list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2em .7em;margin:0}
		.ilb-placenews__list a{color:#111;font-weight:700;text-decoration:none;border-bottom:2px solid rgba(17,17,17,.25)}
		.ilb-placenews__list a:hover{border-bottom-color:#111}
		.ilb-placenews__date{font-size:.8rem;color:#6b6b6b;font-weight:600}

		/* Coming soon. The Open now badge is ink with yellow text, so this is
		   its inverse: yellow with an ink outline, which reads as loudly on a
		   white card as it does on the yellow place header, and can never be
		   mistaken for the badge that means the doors are open right now.
		   It carries no hidden state and needs no script, because a place
		   that has not opened is not a fact about the current minute.
		   The date rides in its own span so the theme can retire it the day
		   after it passes; the emphatic hidden is here as well as in the
		   theme so the chip behaves under an older one. */
		.ilb-soon{display:inline-flex;align-items:center;gap:.45em;align-self:flex-start;max-width:100%;padding:.22em .7em;background:var(--ilb-yellow,#FFD400);border:1px solid var(--ilb-ink,#111);border-radius:999px;color:var(--ilb-ink,#111);font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.06em;text-transform:uppercase;line-height:1.35;white-space:normal;vertical-align:middle}
		.ilb-soon__dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:currentColor}
		.ilb-soon__when{font-weight:800;opacity:.72}
		.ilb-soon__when[hidden]{display:none}
		.ilb-placehead .ilb-soon{margin:.35rem 0 .7rem;background:var(--ilb-ink,#111);color:var(--ilb-yellow,#FFD400);border-color:var(--ilb-ink,#111)}
		.ilb-card .ilb-soon{font-size:var(--ilb-micro,.75rem);letter-spacing:.04em;padding:.2em .6em}

		/* Temporarily closed. The same component in the other direction:
		   solid, so it cannot be read as an outline chip waiting for the
		   browser to fill it in, and orange rather than the brand yellow
		   because yellow on this site means good news. Measured, not picked:
		   white on the #EA580C of the banner is 3.56:1 and would have failed
		   at this size, so the chip is one step darker at #C2410C, which is
		   5.18:1, and the dimmed date is still 4.62:1. The same fill sits on the
		   white card and on the yellow place header without a second rule -
		   the reason the Coming soon chip needs one is that it is painted
		   in the colour of that header, and this one is not.
		   The date rides in its own span so the theme can retire it the day
		   after it passes; the chip itself does not retire, because only a
		   person can say a place has reopened. */
		.ilb-shut{display:inline-flex;align-items:center;gap:.45em;align-self:flex-start;max-width:100%;padding:.22em .7em;background:#C2410C;border:1px solid #C2410C;border-radius:999px;color:#fff;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.06em;text-transform:uppercase;line-height:1.35;white-space:normal;vertical-align:middle}
		.ilb-shut__dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:currentColor}
		.ilb-shut__when{font-weight:800;opacity:.92}
		.ilb-shut__when[hidden]{display:none}
		.ilb-placehead .ilb-shut{margin:.35rem 0 .7rem}
		.ilb-card .ilb-shut{font-size:var(--ilb-micro,.75rem);letter-spacing:.04em;padding:.2em .6em}

		/* The banner that goes with it, in classes at last rather than the
		   inline styles this block has carried since it was written. Same
		   shape as the Coming soon banner so the page has one status
		   language, painted in the warning colour instead of the brand. */
		.ilb-status--shut{border-left:4px solid #C2410C;padding:.85em 1.1em;background:#FFF7ED;border-radius:0 14px 14px 0;margin-bottom:1em}
		.ilb-status--gone{border-left:4px solid #B91C1C;padding:.85em 1.1em;background:#FEF2F2;border-radius:0 14px 14px 0;margin-bottom:1em}
		.ilb-prose .ilb-status--shut p,.ilb-status--shut p,.ilb-prose .ilb-status--gone p,.ilb-status--gone p{margin:0}

		/* The one status banner that is good news, so it is painted in the
		   brand rather than in a warning colour. Yellow at 4px on the left
		   like the other two, but filled, because this is the thing on the
		   page a reader most wants to see. */
		.ilb-status--soon{border-left:4px solid var(--ilb-ink,#111);padding:.85em 1.1em;background:#FFF9DB;border-radius:0 14px 14px 0;margin-bottom:1em}
		.ilb-prose .ilb-status--soon p,.ilb-status--soon p{margin:0}
		.ilb-status__head{font-size:1.05rem;font-weight:800;letter-spacing:.02em;color:#111}
		.ilb-status__when{margin-top:.15em!important;font-weight:800;color:#111}
		.ilb-status__note{margin-top:.35em!important;color:#555;font-size:.95rem;font-weight:400}
		.ilb-status__more{margin-top:.5em!important;font-size:.95rem}
		.ilb-status__more a{color:#111;font-weight:700;text-decoration:none;border-bottom:2px solid rgba(17,17,17,.25)}
		.ilb-status__more a:hover{border-bottom-color:#111}

		.ilb-related__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),290px));justify-content:start;gap:18px;align-items:stretch}
		/* No overflow clipping on the card: it was cutting the bottom border.
		   The image rounds its own top corners instead. */
		/* A visible outline all the way round: the media is inset by the border
		   width so the image cannot sit on top of it. */
		.ilb-related__card{box-sizing:border-box;display:flex;flex-direction:column;padding:1px;background:#fff;border:1px solid #dcdcdc;border-radius:16px;text-decoration:none;color:inherit;overflow:visible;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
		.ilb-related__card>*{box-sizing:border-box;max-width:100%}
		.ilb-related__card:hover{transform:translateY(-3px);border-color:#111;box-shadow:0 10px 28px rgba(0,0,0,.08)}
		.ilb-related__media{display:block;background:#efefef;line-height:0;border-radius:13px 13px 0 0;overflow:hidden}
		.ilb-related__img{display:block;width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;transition:transform .5s ease}
		.ilb-related__card:hover .ilb-related__img{transform:scale(1.05)}
		.ilb-related__body{display:flex;flex-direction:column;align-items:flex-start;gap:.5em;flex:1 1 auto;padding:14px 16px 16px}
		.ilb-related__type{display:inline-block;padding:.24em .8em;background:#FFF3B8;border-radius:999px;color:#111;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.05em;text-transform:uppercase;line-height:1.5}
		.ilb-related__name{display:block;font-weight:800;font-size:1rem;line-height:1.28;letter-spacing:-.005em}
		.ilb-related__sum{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.86rem;line-height:1.5;color:#767676}
		@media (max-width:560px){.ilb-related__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:14px}.ilb-related__sum{display:none}}
		.ilb-event-hero{margin:0 0 1.5em;padding:0}
		.ilb-event-hero img{width:100%;height:auto;max-height:440px;object-fit:cover;border-radius:14px;display:block}
		.tribe-events-event-image{display:none}
		.ilb-event-header{margin:1.1em 0 1.75em}
		.ilb-event-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.45em 1.1em;margin:1.25em 0 1em;font-size:.98rem}
		.ilb-event-meta__item{display:inline-flex;align-items:center;gap:.5em;color:#333}
		.ilb-event-meta__item .dashicons{color:#111;background:#FFD400;border-radius:50%;width:26px;height:26px;font-size:16px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
		.ilb-event-meta__item a{color:#111 !important;font-weight:700;text-decoration:none;border-bottom:2px solid #FFD400}
		.ilb-event-meta__item a:hover{border-bottom-color:#111}
		.ilb-event-cta{display:inline-flex;align-items:center;gap:.5em;background:#111 !important;color:#fff !important;border:none;border-bottom:none !important;border-radius:999px;padding:.75em 1.6em;font-weight:700;font-size:.95rem;text-decoration:none;margin:0 0 2em;transition:transform .15s ease,box-shadow .15s ease}
		.ilb-event-cta:hover,.ilb-event-cta:focus{background:#000 !important;color:#fff !important;transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.15)}
		.ilb-event-cta .dashicons{font-size:16px;width:16px;height:16px;color:#fff !important}
		.ilb-details{display:grid;grid-template-columns:auto 1fr;gap:.5em 1.25em;margin:1.25em 0}
		.ilb-details dt{font-weight:700;margin:0}
		.ilb-details dd{margin:0}
		@media(max-width:480px){.ilb-details{grid-template-columns:1fr;gap:.15em}.ilb-details dd{margin-bottom:.6em}}
		.ilb-verified{display:inline-flex;align-items:center;gap:.55em;background:#111;color:#fff;border-radius:999px;padding:.5em 1.1em;margin:0 0 .25em;font-size:.85rem;font-weight:600;letter-spacing:.01em}
		.ilb-verified__heart{color:#FFD400;font-size:1.05em;line-height:1}
		.ilb-verified__sub{display:block;font-size:.8rem;color:#666;margin:.5em 0 0}
		/* Section anchors (2.75.0). Every section heading on a place page
		   carries a stable id so a link can point at one, and the offset
		   keeps the sticky header from covering the heading it just jumped
		   to. Same custom property the offers page already uses. */
		.ilb-place-section__title,.ilb-offers__title,.ilb-related__title,.ilb-weekmenu{scroll-margin-top:var(--ilb-jump,8rem)}
		.ilb-place-events{margin-top:2rem}
		.ilb-place-events__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.9rem}
		.ilb-place-events__head h2{margin:0;font-size:1.15rem}
		.ilb-place-events__count{font-size:.82rem;color:#666;white-space:nowrap}
		.ilb-event-item{box-sizing:border-box;display:flex;gap:16px;align-items:center;padding:12px 14px;border:1px solid #eee;border-radius:12px;margin-bottom:10px;text-decoration:none;color:inherit;background:#fff;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}
		.ilb-event-item:hover{border-color:#111;transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.07)}
		.ilb-event-date{display:block;flex:0 0 auto;width:56px;text-align:center;background:#FFD400;border-radius:10px;padding:8px 4px;line-height:1}
		.ilb-event-date__month{display:block;font-size:var(--ilb-micro,.75rem);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#111;opacity:.75}
		.ilb-event-date__day{display:block;font-size:1.35rem;font-weight:800;color:#111;margin-top:2px}
		.ilb-event-body{min-width:0}
		.ilb-event-title{display:block;font-weight:700;line-height:1.35;margin-bottom:2px}
		.ilb-event-meta{display:block;font-size:.85rem;color:#666}
		@media(max-width:480px){.ilb-event-item{gap:12px;padding:10px 12px}.ilb-event-date{width:48px}}
		/* The fold under the five cards (2.91.0). A quiet ink button that reads
		   as the continuation of the list, not a new section. The rows are
		   lighter than the cards on purpose: the cards are this week, the rows
		   are the season. 44px rows for a thumb. */
		.ilb-place-events__more{margin-top:4px}
		.ilb-place-events__toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:10px 14px;border:1px solid #111;border-radius:12px;background:#fff;color:#111;font-weight:700;font-size:.95rem;cursor:pointer;list-style:none;user-select:none}
		.ilb-place-events__toggle::-webkit-details-marker{display:none}
		@media (hover:hover){.ilb-place-events__toggle:hover{background:#FFD400}}
		.ilb-place-events__toggle-open{display:none}
		.ilb-place-events__more[open] .ilb-place-events__toggle-open{display:inline}
		.ilb-place-events__more[open] .ilb-place-events__toggle-closed{display:none}
		.ilb-place-events__chev{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s ease}
		.ilb-place-events__more[open] .ilb-place-events__chev{transform:translateY(2px) rotate(-135deg)}
		.ilb-place-events__more[open] .ilb-place-events__toggle{margin-bottom:.4rem}
		.ilb-place-events__month{margin:1.1rem 0 .3rem;font-size:var(--ilb-micro,.75rem);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#555}
		.ilb-place-events__list{list-style:none;margin:0;padding:0;border-top:1px solid #eee}
		.ilb-place-events__list li{margin:0;padding:0}
		.ilb-event-row{display:grid;grid-template-columns:4.2rem 1fr auto;align-items:center;gap:12px;min-height:44px;padding:8px 4px;border-bottom:1px solid #eee;text-decoration:none;color:inherit}
		.ilb-event-row:hover .ilb-event-row__title{text-decoration:underline;text-underline-offset:3px}
		.ilb-event-row__date{white-space:nowrap}
		.ilb-event-row__dow{font-size:.8rem;color:#555;text-transform:capitalize}
		.ilb-event-row__day{font-weight:800;font-size:1.05rem;color:#111}
		.ilb-event-row__title{font-weight:600;line-height:1.3;min-width:0}
		.ilb-event-row__time{font-size:.85rem;color:#555;white-space:nowrap;font-variant-numeric:tabular-nums}
		.ilb-event-item.is-on-now{border-color:#111}
		.ilb-event-item.is-on-now .ilb-event-date__month{letter-spacing:.02em}
		.ilb-event-item.is-on-now .ilb-event-meta{color:#111;font-weight:700}
		/* 2.91.1. Two theme rules win over the card on a place page, both at
		   the same specificity and loaded later. The theme rule .ilb-event-item
		   sets border-bottom:0 (a link-underline reset), invisible on a pale
		   border and obvious on the ink one: the on-now card lost its bottom
		   edge. And the event-page header .ilb-event-meta margin (1.25em 0
		   1em) leaked onto the card line, pushing the text up off-centre.
		   Scoped to the block so neither theme rule is touched elsewhere. */
		.ilb-place-events .ilb-event-item{border-bottom:1px solid var(--ilb-line,#E5E5E5)}
		.ilb-place-events .ilb-event-item.is-on-now{border-color:#111}
		.ilb-place-events .ilb-event-meta{display:block;margin:2px 0 0}
		/* The fold inside the theme prose: ul padding, h3 size and body-size
		   titles all come from the theme. Row titles at 1rem sit one step
		   under the card titles and line up with them. */
		.ilb-place-events .ilb-place-events__list{padding-left:0;margin:0}
		.ilb-place-events h3.ilb-place-events__month{font-size:.8rem;line-height:1.3;margin:1.1rem 0 .35rem}
		.ilb-place-events .ilb-event-row__title{font-size:1rem}
		/* 2.92.0. Nothing coming up: one quiet line, in the page type rather
		   than the card type, so it reads as a note and not as a listing. */
		.ilb-place-events .ilb-place-recent{margin:0;padding:12px 14px;border:1px dashed var(--ilb-line,#E5E5E5);border-radius:12px;font-size:.95rem;line-height:1.55;color:#444}
		.ilb-place-recent__label{font-weight:700;color:#111;margin-right:.25em}
		.ilb-place-recent__item{white-space:normal}
		.ilb-place-recent__when{color:#555;white-space:nowrap}
		@media (prefers-reduced-motion:reduce){.ilb-place-events__chev{transition:none}}

		/* Menu of the week: the one block a lunch decision needs. Only current
		   weeks render, and each card removes itself in the browser once its
		   dates pass, whatever a page cache remembers. */
		.ilb-weekmenu{display:block;margin:.4em 0 2rem}
		.ilb-prose .ilb-weekmenu__heading,.ilb-weekmenu__heading{display:flex;align-items:center;gap:.55em;margin:0 0 .8rem;font-size:1.45rem;font-weight:800;line-height:1.2;letter-spacing:-.01em}
		.ilb-weekmenu__heading::before{content:"";flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--ilb-yellow,#FFD400)}
		.ilb-weekmenu__card{border:2px solid var(--ilb-ink,#111);border-radius:16px;background:#fff;padding:16px 20px 18px;margin:0 0 1em}
		.ilb-weekmenu__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5em .8em;margin:0 0 .7em}
		.ilb-weekmenu__dates{font-weight:800;font-size:1.02rem}
		.ilb-weekmenu__lang{display:inline-block;background:#FFFBE6;border:1px solid #FFE873;border-radius:999px;padding:.15em .75em;font-size:.78rem;font-weight:700;color:#6b5900}
		.ilb-weekmenu__title{margin:0 0 .35em;font-weight:700;font-size:1.05rem}
		.ilb-weekmenu__day{margin:.9em 0 .35em;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#767676}
		.ilb-weekmenu__todaytag{display:none;margin-left:.7em;background:var(--ilb-yellow,#FFD400);color:#111;border-radius:999px;padding:.2em .7em;font-size:.68rem;font-weight:800;letter-spacing:.06em;vertical-align:.08em}
		/* The panel bleeds out to the edge of the card padding (-.8em against
		   20px), so today reads as a block rather than a tinted line. */
		.ilb-weekmenu__group.is-today{background:#FFFBE6;border:2px solid var(--ilb-yellow,#FFD400);border-radius:12px;padding:.1em .8em .5em;margin:.9em -.8em .2em}
		.ilb-weekmenu__group.is-today .ilb-weekmenu__day{margin-top:.55em;color:#111}
		.ilb-weekmenu__group.is-today.is-when-today .ilb-weekmenu__todaytag[data-ilb-when="today"],.ilb-weekmenu__group.is-today.is-when-tomorrow .ilb-weekmenu__todaytag[data-ilb-when="tomorrow"],.ilb-weekmenu__group.is-today.is-when-named .ilb-weekmenu__todaytag[data-ilb-when="named"]{display:inline-block}
		/* #767676 clears 4.5:1 on white but not on the cream, so the dish
		   descriptions darken inside the panel rather than losing contrast. */
		.ilb-weekmenu__group.is-today .ilb-weekmenu__dishdesc{color:#5c5c5c}
		.ilb-weekmenu__group.is-today .ilb-weekmenu__dish+.ilb-weekmenu__dish{border-top-color:#F2E8B8}
		@media(forced-colors:active){.ilb-weekmenu__group.is-today{border-color:CanvasText}}
		.ilb-weekmenu__dish{display:flex;align-items:baseline;justify-content:space-between;gap:1.2em;padding:.55em 0}
		.ilb-weekmenu__dish+.ilb-weekmenu__dish{border-top:1px solid #f0f0f1}
		.ilb-weekmenu__dishname{font-weight:600;line-height:1.4}
		.ilb-weekmenu__dishdesc{display:block;font-weight:400;font-size:.88rem;line-height:1.45;color:#767676;margin-top:.1em}
		.ilb-weekmenu__price{font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}
		.ilb-weekmenu__note{margin:.7em 0 0;font-size:.88rem;color:#767676}
		.ilb-weekmenu__photo{margin:.9em 0 0}
		.ilb-weekmenu__photo a{display:inline-block;line-height:0}
		.ilb-weekmenu__photo img{max-width:100%;height:auto;border-radius:12px;display:block}
		@media(max-width:480px){.ilb-weekmenu__card{padding:14px 16px}}

		/* "Menu this week" flag on cards; the menus board; the front-page strip. */
		.ilb-menu-flag{display:inline-block;align-self:flex-start;max-width:100%;background:#FFFBE6;border:1px solid #FFE873;border-radius:999px;padding:.2em .7em;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#6b5900}
		.ilb-menuboard__place{margin:0 0 2.4rem}
		.ilb-menuboard__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4em .8em;margin:0 0 .7rem}
		.ilb-prose .ilb-menuboard__name,.ilb-menuboard__name{margin:0;font-size:1.3rem;font-weight:800;letter-spacing:-.01em}
		.ilb-menuboard__name a{color:inherit;text-decoration:none;border-bottom:3px solid var(--ilb-yellow,#FFD400)}
		.ilb-menuboard__name a:hover{border-bottom-color:var(--ilb-ink,#111)}
		.ilb-menuboard__type{display:inline-block;padding:.24em .8em;background:#FFF3B8;border-radius:999px;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.05em;text-transform:uppercase}
		.ilb-menuboard__empty{color:#666}
		div.ilb-wrap.ilb-menusec{margin-top:var(--ilb-block,3rem);margin-bottom:0}
		.ilb-menustrip{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:14px}
		.ilb-menustrip__card{display:flex;flex-direction:column;gap:.35em;padding:14px 16px;background:#fff;border:2px solid var(--ilb-ink,#111);border-radius:14px;color:inherit;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
		.ilb-menustrip__card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.08)}
		.ilb-menustrip__name{font-weight:800;line-height:1.3}
		.ilb-menustrip__dishes{font-size:.86rem;line-height:1.45;color:#666}
		.ilb-menustrip__dates{margin-top:auto;font-size:var(--ilb-micro,.75rem);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#6b5900}
		@media (prefers-reduced-motion:reduce){.ilb-menustrip__card{transition:none}}
		
		.ilb-sortline{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 1.5rem;}
		.ilb-sortline__sorts{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-left:auto;}
		.ilb-sortline__label{font-size:var(--ilb-micro,.75rem);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ilb-faint,#9A9A9A);}
		.ilb-sortline__link{position:relative;font-size:.86rem;font-weight:600;color:var(--ilb-muted,#767676);text-decoration:none;border-bottom:2px solid transparent;padding-bottom:1px;transition:color .16s ease,border-color .16s ease;}
		.ilb-sortline__link:hover{color:var(--ilb-ink,#111);border-bottom-color:var(--ilb-line,#E5E5E5);}
		.ilb-sortline__link.is-on{color:var(--ilb-ink,#111);border-bottom-color:var(--ilb-yellow,#FFD400);}
		.ilb-sortline__count{font-size:.86rem;color:var(--ilb-muted,#767676);}
		.ilb-sortline__filter{display:inline-flex;align-items:center;gap:.45em;padding:.35em .85em;border:1px solid var(--ilb-line,#E5E5E5);border-radius:999px;background:var(--ilb-surface,#fff);color:var(--ilb-ink,#111);font-size:.84rem;font-weight:700;line-height:1.4;text-decoration:none;transition:border-color .16s ease,background .16s ease;}
		.ilb-sortline__filter:hover{border-color:var(--ilb-ink,#111);}
		.ilb-sortline__filter.is-on{background:var(--ilb-yellow,#FFD400);border-color:var(--ilb-yellow,#FFD400);}
		.ilb-sortline__dot{width:8px;height:8px;border-radius:50%;background:#00a32a;box-shadow:0 0 0 3px rgba(0,163,42,.18);}
		.ilb-sortline__filter.is-on .ilb-sortline__dot{background:var(--ilb-ink,#111);box-shadow:0 0 0 3px rgba(17,17,17,.15);}
		.ilb-sortline__x{font-weight:700;line-height:1;opacity:.55;transition:opacity .16s ease;}
		/* The Coming soon chip in its off state: an invitation rather than a
		   filter that is on, so it takes the ink outline and the count sits
		   in a yellow counter rather than the whole chip turning yellow,
		   which is what "this filter is applied" already means here. */
		.ilb-sortline__soon{border-color:var(--ilb-ink,#111);}
		.ilb-sortline__soon:hover{background:var(--ilb-yellow,#FFD400);}
		.ilb-sortline__n{display:inline-block;min-width:1.5em;padding:0 .35em;border-radius:999px;background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111);font-size:.78rem;font-weight:800;text-align:center;}
		.ilb-sortline__soon:hover .ilb-sortline__n{background:var(--ilb-ink,#111);color:var(--ilb-yellow,#FFD400);}
		.ilb-sortline__diet:hover .ilb-sortline__x,.ilb-sortline__diet:focus-visible .ilb-sortline__x{opacity:1;}
		@media (max-width:640px){.ilb-sortline__sorts{margin-left:0;}}
		@media (prefers-reduced-motion:reduce){.ilb-sortline__link,.ilb-sortline__filter{transition:none;}}
		
		.ilb-offers{margin:0}
		.ilb-offers__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .9rem;margin:0 0 .6rem}
		.ilb-offers__title{margin:0;font-size:1.1rem;font-weight:800;letter-spacing:-.01em}
		.ilb-offers__all{margin-left:auto;font-size:.84rem;font-weight:700;color:var(--ilb-muted,#767676);text-decoration:none;border-bottom:2px solid var(--ilb-yellow,#FFD400);white-space:nowrap}
		.ilb-offers__all:hover{color:var(--ilb-ink,#111)}
		@media (max-width:520px){.ilb-offers__all{margin-left:0}}
		.ilb-offers__group{margin:0 0 .9rem}
		.ilb-offers__for{margin:0 0 .35rem;font-size:var(--ilb-micro,.75rem);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ilb-muted,#767676)}
		.ilb-offers__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}
		.ilb-offer{display:flex;align-items:flex-start;gap:.8em;margin:0;padding:.7em .95em;border:2px solid var(--ilb-ink,#111);border-radius:14px;background:var(--ilb-surface,#fff)}
		.ilb-offer__value{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:2.9em;min-height:2.9em;padding:0 .5em;box-sizing:border-box;border-radius:999px;background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111);font-size:.92em;font-weight:800;line-height:1.1;text-align:center;white-space:nowrap}
		.ilb-offer__value--none{min-width:2.4em;min-height:2.4em;padding:0}
		/* A long value on a narrow screen. "10 stamps = 1 free" on one line took
		   half the card and left the title of the offer wrapping to three words a
		   line. Below 520 the badge is allowed to wrap inside itself and is capped
		   at a third of the card, so the offer keeps its name. */
		@media (max-width:520px){
		.ilb-offer{gap:.65em;padding:.65em .8em}
		.ilb-offer__value{max-width:34%;white-space:normal;border-radius:16px;font-size:var(--ilb-micro,.75rem)}
		.ilb-offer__value--none{max-width:none}
		}
		.ilb-offer__body{display:block;min-width:0}
		.ilb-offer__name{display:inline;line-height:1.3;font-weight:800}
		.ilb-offer__who{display:inline-block;margin-left:.5em;padding:.05em .6em;border-radius:999px;background:#F3F4F6;color:var(--ilb-muted,#767676);font-size:var(--ilb-micro,.75rem);font-weight:700;vertical-align:.08em;white-space:nowrap}
		.ilb-offer__desc{display:block;margin-top:.15em;color:#3f4750;font-size:.94em;line-height:1.4}
		/* The discounts page. Category sections, places inside them, cards
		   inside those, so the page reads at three glances rather than one. */
		/* The bar. Sticky, so on a page this long the filter is still to hand
		   at the bottom of it. `top` is set by the script to whatever the theme
		   has pinned above; the value here is the fallback for a theme with
		   nothing pinned and for the moment before the script runs. */
		.ilb-offers-page__bar{position:sticky;top:0;z-index:20;margin:0 0 1.8rem;padding:.7rem 0 .6rem;background:var(--ilb-surface,#fff);border-bottom:1px solid var(--ilb-line,#E5E5E5)}
		.ilb-offers-page__count{margin:0 0 .55rem;font-size:var(--ilb-micro,.75rem);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ilb-muted,#767676)}
		.ilb-offers-page__nav{display:flex;flex-wrap:wrap;gap:.5em;margin:0}
		.ilb-offers-page__jump[aria-current="true"]{border-color:var(--ilb-ink,#111);background:var(--ilb-yellow,#FFD400)}
		.ilb-offers-page__jump[aria-current="true"] .ilb-offers-page__jumpicon{color:var(--ilb-ink,#111)}
		/* The filter row. Buttons rather than links: this changes what is on
		   the screen, it does not go anywhere. */
		.ilb-offers-page__filters{display:flex;flex-wrap:wrap;gap:.5em;margin:.6rem 0 0}
		.ilb-offers-page__filters[hidden]{display:none}
		.ilb-offers-page__chip{display:inline-flex;align-items:center;gap:.45em;margin:0;padding:.35em .8em;border:2px solid var(--ilb-line,#E5E5E5);border-radius:999px;background:var(--ilb-surface,#fff);color:var(--ilb-muted,#767676);font:inherit;font-size:.84rem;font-weight:700;line-height:1.3;cursor:pointer;transition:border-color .16s ease,color .16s ease,background .16s ease}
		.ilb-offers-page__chip:hover{border-color:var(--ilb-ink,#111);color:var(--ilb-ink,#111)}
		.ilb-offers-page__chip.is-on{border-color:var(--ilb-ink,#111);background:var(--ilb-ink,#111);color:#fff}
		.ilb-offers-page__chipnum{display:inline-block;min-width:1.5em;padding:0 .3em;border-radius:999px;background:#F3F4F6;color:var(--ilb-muted,#767676);font-size:var(--ilb-micro,.75rem);font-weight:800;text-align:center}
		.ilb-offers-page__chip.is-on .ilb-offers-page__chipnum{background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111)}
		/* Narrow screens: the categories become a single scrolling row rather
		   than three lines of pills, so the bar cannot eat half the window. */
		@media (max-width:640px){
		.ilb-offers-page__nav,.ilb-offers-page__filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
		.ilb-offers-page__nav::-webkit-scrollbar,.ilb-offers-page__filters::-webkit-scrollbar{display:none}
		.ilb-offers-page__jump,.ilb-offers-page__chip{white-space:nowrap;flex:0 0 auto}
		}
		@media (prefers-reduced-motion:reduce){.ilb-offers-page__chip{transition:none}}
		.ilb-offers-page__jump{display:inline-flex;align-items:center;padding:.35em .85em;border:1px solid var(--ilb-line,#E5E5E5);border-radius:999px;color:var(--ilb-ink,#111);font-size:.84rem;font-weight:700;text-decoration:none;transition:border-color .16s ease,background .16s ease}
		.ilb-offers-page__jump:hover{border-color:var(--ilb-ink,#111);background:var(--ilb-yellow,#FFD400)}
		.ilb-offers-page__cat{margin:0 0 2.6rem;scroll-margin-top:var(--ilb-jump,8rem)}
		.ilb-offers-page__cat[hidden],.ilb-offers-page__place[hidden],.ilb-offer[hidden],.ilb-offers-page__jump[hidden]{display:none}
		.ilb-offers-page__catname{display:flex;align-items:center;gap:.6rem;margin:0 0 1.1rem;padding-bottom:.5rem;border-bottom:2px solid var(--ilb-yellow,#FFD400);font-size:1.35rem;font-weight:800;letter-spacing:-.01em}
		/* A tile rather than a loose glyph, so the heading has a shoulder to sit
		   against and the icons line up down the page whatever their shape. */
		.ilb-offers-page__icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:2.1rem;height:2.1rem;border-radius:12px;background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111)}
		.ilb-offers-page__icon svg{width:1.25rem;height:1.25rem;display:block}
		.ilb-offers-page__jumpicon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;margin-right:.4em;color:var(--ilb-muted,#767676)}
		.ilb-offers-page__jumpicon svg{width:1.05em;height:1.05em;display:block}
		.ilb-offers-page__jump:hover .ilb-offers-page__jumpicon,.ilb-offers-page__jump:focus-visible .ilb-offers-page__jumpicon{color:var(--ilb-ink,#111)}
		.ilb-offers-page__place{margin:0 0 1.4rem}
		.ilb-offers-page__name{margin:0 0 .5rem;font-size:1.02rem;font-weight:800}
		.ilb-offers-page__name a{color:inherit;text-decoration:none;border-bottom:2px solid var(--ilb-yellow,#FFD400)}
		.ilb-offers-page__name a:hover{border-bottom-color:var(--ilb-ink,#111)}
		.ilb-offers-page__empty{color:var(--ilb-muted,#767676)}
		@media (prefers-reduced-motion:reduce){.ilb-offers-page__jump{transition:none}}
		
		.ilb-fix{margin:2rem 0 0}
		/* Both acknowledgements are in the page always and shown by :target
		   alone, so a cached page can still answer somebody. */
		.ilb-fix__said{display:none}
		.ilb-fix__said:target{display:block;margin:0 0 1rem;padding:.85em 1.1em;border-radius:12px;background:var(--ilb-ink,#111);color:var(--ilb-yellow,#FFD400);font-weight:700}
		/* Not a red panel. The palette has no red, and an apology for a form
		   that did not send does not need to alarm anybody: it needs to be
		   read and tried again. Ink on the soft line grey, 15.9:1. */
		.ilb-fix__said--no:target{background:var(--ilb-line-soft,#F1F0EA);color:var(--ilb-ink,#111)}
		.ilb-fix__box{border:1px solid var(--ilb-line,#E5E5E5);border-radius:12px;padding:.85em 1.1em;background:var(--ilb-surface,#fff)}
		.ilb-fix__box[open]{padding-bottom:1.2em}
		.ilb-fix__open{cursor:pointer;font-weight:700;font-size:.95rem;list-style:none}
		.ilb-fix__open::-webkit-details-marker{display:none}
		.ilb-fix__open::before{content:"\270E";margin-right:.55em}
		.ilb-fix__box[open] .ilb-fix__open{margin-bottom:.7em}
		.ilb-fix__why{margin:0 0 1em;font-size:.9rem;color:var(--ilb-muted,#666);max-width:60ch}
		.ilb-fix__row{margin:0 0 .85em}
		.ilb-fix__row label{display:block;margin-bottom:.3em;font-size:.85rem;font-weight:700}
		.ilb-fix__opt{font-weight:400;color:var(--ilb-muted,#666)}
		.ilb-fix__form select,.ilb-fix__form textarea,.ilb-fix__form input[type=email]{width:100%;max-width:46ch;padding:.5em .7em;border:1px solid var(--ilb-line,#E5E5E5);border-radius:8px;font:inherit;font-size:.92rem;background:#fff;color:var(--ilb-ink,#111)}
		.ilb-fix__form textarea{resize:vertical}
		.ilb-fix__send{padding:.55em 1.3em;border:0;border-radius:999px;background:var(--ilb-ink,#111);color:#fff;font:inherit;font-weight:700;cursor:pointer}
		.ilb-fix__send:hover{background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111)}
		/* Off screen rather than display:none: a bot that skips hidden fields
		   is a bot that walks past the trap. */
		.ilb-fix__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
		@media (max-width:480px){.ilb-fix__form select,.ilb-fix__form textarea,.ilb-fix__form input[type=email]{max-width:none}}
		
		.ilb-sug{max-width:64ch}
		.ilb-sug__said{display:none;margin:0 0 1.2em;padding:.9em 1.1em;border-radius:10px;background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111);font-weight:700}
		.ilb-sug__said--no{background:#fff;border:1px solid var(--ilb-ink,#111)}
		#ilb-sug-thanks:target,#ilb-sug-sorry:target{display:block}
		#ilb-sug-thanks:target ~ .ilb-sug__form{display:none}
		.ilb-sug__set{margin:0 0 1.6em;padding:0;border:0;min-width:0}
		.ilb-sug__set legend{padding:0;margin:0 0 .9em;font-size:1.2rem;font-weight:900;line-height:1.2}
		.ilb-sug__set legend::after{content:"";display:block;width:44px;height:4px;margin-top:.4em;border-radius:2px;background:var(--ilb-yellow,#FFD400)}
		.ilb-sug__set + .ilb-sug__set{margin-top:2.2em}
		.ilb-sug__row{margin:0 0 .95em}
		.ilb-sug__row label{display:block;margin-bottom:.3em;font-size:.9rem;font-weight:700}
		.ilb-sug__req{color:var(--ilb-ink,#111)}
		.ilb-sug__help{display:block;margin:-.15em 0 .45em;font-size:.85rem;color:var(--ilb-muted,#666)}
		.ilb-sug__form input:not([type=checkbox]):not([type=radio]),.ilb-sug__form select,.ilb-sug__form textarea{box-sizing:border-box;width:100%;padding:.55em .75em;border:1px solid var(--ilb-line,#E5E5E5);border-radius:8px;font:inherit;font-size:.95rem;background:#fff;color:var(--ilb-ink,#111)}
		.ilb-sug__form input:focus-visible,.ilb-sug__form select:focus-visible,.ilb-sug__form textarea:focus-visible{outline:3px solid var(--ilb-ink,#111);outline-offset:1px}
		.ilb-sug__form textarea{resize:vertical}
		.ilb-sug__opt{font-weight:400;color:var(--ilb-muted,#666)}
		.ilb-sug__pair{display:grid;grid-template-columns:1fr 1fr;gap:0 1em;align-items:end}
		.ilb-sug__row--check label{display:flex;gap:.6em;align-items:flex-start;font-weight:400;font-size:.9rem;line-height:1.45}
		.ilb-sug__row--check a{color:inherit}
		.ilb-sug .ilb-fix__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
		.ilb-sug__row--check input{margin-top:.25em;flex:none}
		.ilb-sug__grid{display:flex;flex-direction:column;gap:.45em;margin:0 0 .9em}
		.ilb-sug__day{display:grid;grid-template-columns:5.8em 4.6em 1fr 5em 6.4em;gap:.5em;align-items:center;font-size:.88rem}
		.ilb-sug__dayname{font-weight:700}
		.ilb-sug__pick{display:flex;gap:.3em;align-items:center;font-weight:400!important;margin:0!important}
		.ilb-sug__times{display:flex;gap:.3em;align-items:center}
		.ilb-sug__times input[type=time]{padding:.3em .4em;font-size:.88rem}
		.ilb-sug__day:has(input[value=closed]:checked) .ilb-sug__times,.ilb-sug__day:has(input[value=unknown]:checked) .ilb-sug__times{opacity:.35;pointer-events:none}
		.ilb-sug__send{padding:.65em 1.5em;border:0;border-radius:999px;background:var(--ilb-ink,#111);color:#fff;font:inherit;font-weight:700;cursor:pointer}
		.ilb-sug__send:hover{background:var(--ilb-yellow,#FFD400);color:var(--ilb-ink,#111)}
		.ilb-sug__note{margin-left:.8em;font-size:.88rem;color:var(--ilb-muted,#666)}
		@media (max-width:560px){.ilb-sug__pair{grid-template-columns:1fr}.ilb-sug__day{grid-template-columns:1fr 1fr;row-gap:.35em}.ilb-sug__dayname{grid-column:1 / -1}.ilb-sug__times{grid-column:2}}
		