/* ------------------------------------------------------------------
   THE POST OFFICE MOSS VALE, home page, ROUND 3

   THE TOP OF THE PAGE IS NOT REDRAWN. Every piece of lettering, every
   rule, the postmark, the stamp, the postcard and the paper are the
   approved mock's own pixels, lifted at 2x by _build/cut_assets.py.

   The hero is the mock's 1161 x 1355 canvas at 1440, so every position
   in that block is a mock coordinate times 1.24031, less the 136 px the
   header now occupies above it. Inside the two groups the children are
   placed in PER CENT of the group, which is what lets the same assets
   reflow on a phone without being redrawn.

   MILESTONE 1 added, below the postcard row, one postal object per
   section. The mock shows only the top of the page, so there are no
   pixels to cut for these: they are built from the same materials the
   mock uses, on the mock's own paper, in the locked palette, at the
   mock's own perforation gauge. Nothing here invents a new colour, a
   new face or a new mark.

   Ours: the photographs, the crest, and the five nav links. Everything
   else at the top is the mock.
   ------------------------------------------------------------------ */

/* cyrillic-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(../fonts/Wnz6HAc5bAfYB2Q7azYYiAzcPDKo.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(../fonts/Wnz6HAc5bAfYB2Q7YjYYiAzcPDKo.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(../fonts/Wnz6HAc5bAfYB2Q7aDYYiAzcPDKo.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(../fonts/Wnz6HAc5bAfYB2Q7ZjYYiAzcPA.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Courier Prime';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/u-450q2lgwslOqpF_6gQ8kELaw9pWs39pvnRPA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Courier Prime';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/u-450q2lgwslOqpF_6gQ8kELawFpWs39pvk.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Courier Prime';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/u-4k0q2lgwslOqpF_6gQ8kELY7pMT-7fq9PrNX2-Ag.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Courier Prime';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/u-4k0q2lgwslOqpF_6gQ8kELY7pMT-Dfq9PrNX0.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgEM86xQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgEM86xQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgEM86xRbPQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgEM86xQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Rye';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/r05XGLJT86YzH57tfumh4gok.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Rye';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/r05XGLJT86YzEZ7tfumh4g.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Berkshire Swash';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ptRRTi-cavZOGqCvnNJDl5m5XmN_pM4zT305QaYc.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Berkshire Swash';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ptRRTi-cavZOGqCvnNJDl5m5XmN_qs4zT305QQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Elsie Swash Caps';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/845DNN8xGZyVX5MVo_upKf7KnjK0TePfKUevQo6JtA.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Elsie Swash Caps';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/845DNN8xGZyVX5MVo_upKf7KnjK0Te3fKUevQo4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Elsie Swash Caps';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(../fonts/845ENN8xGZyVX5MVo_upKf7KnjK0RW74PGSNT6SzvdRzvQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Elsie Swash Caps';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(../fonts/845ENN8xGZyVX5MVo_upKf7KnjK0RW74PGqNT6SzvdQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Yeseva One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/OpNJno4ck8vc-xYpwWWxliBVWzfAw0blNQ.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Yeseva One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/OpNJno4ck8vc-xYpwWWxlilVWzfAw0blNQ.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Yeseva One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/OpNJno4ck8vc-xYpwWWxliJVWzfAw0blNQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Yeseva One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/OpNJno4ck8vc-xYpwWWxliNVWzfAw0blNQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Yeseva One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/OpNJno4ck8vc-xYpwWWxli1VWzfAw0Y.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Tinos, ital,wght@0,400;0,700;1,400 */
@font-face {
  font-family: 'Tinos';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/buE2poGnedXvwjX-TmhJ9QA98NRyYw.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Tinos';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/buE2poGnedXvwjX-TmZJ9QA98NQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Tinos';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/buE4poGnedXvwjX1fmRD8iI_wNU.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Tinos';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/buE4poGnedXvwjX7fmRD8iI_.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Tinos';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/buE1poGnedXvwj1AW3Fg0C8V-txKWiw.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Tinos';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../fonts/buE1poGnedXvwj1AW3Fu0C8V-txK.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Generated by _build/make_perf_mask.py. Do not hand edit.
   The perforated silhouette of the small stamps, at the mock's own
   gauge: 6 x 7 teeth, 33 px pitch, 27 px scallop.
   It is a data URI because a file:// mask-image is blocked by the
   browser's origin rules and a blocked mask hides the element. */
.perf {
  -webkit-mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYwAAAHOCAQAAAAhoPamAAAIjUlEQVR42u3dwbarKBBAUeH//zlv+AZ6E0BIsGrvYQ96Edc9KTqiXY6feb2u/mkp1mANv1rDf/UAhAHCAGGAMCBmGNe/Qfz9z63BGkwMsJUCYTQMyG8NT2uwBhMDhAGPDOPTcPzG8LQGazAxYP8wWvpf/R1hDdawWRitH3HlpbAGa7CVgv3D6Ol+1XeENVjDZmH0frQVl8IarGGzMEY+1uxLYQ3WsFkYox9p5qWwBmvYLIw7H2fWpbAGa9gsjLsfZcalsAZr6FF2j2LGi1SswRo2mxh2xtaw2xp+PjHWLLzve8IarGGjMNbvAT9fDmuwhh+E8XpdL+W7dyetwRpa1jCSTdn7RzP4zTRxiBCEAcIAYYAwQBggDBAGCAOEASnDcCCEpxj7WzUxQBiwMAwbKaJvpkwMEAYsC8NGivibKRMDZoRhXpBhZlRZIA1bKZgfhnlBlplRZYE0boQhCzKlUWWBNAbDkAXZ0qiyQBpH77trRcGR8q22VRaYGx0TQxRknhtFEnDOo0gCznkUMYBDhCAMEAYIA4QBwgBhgDBAGCAMiMZZKbg6K3U4XQvvT9fKA0k0PNoqDrI+3FpHn4mFyM98F28JQRRDP9eaG2TLovE+hjTIlUXzDT5pkCmLjjvf0iBPFl1HQqRBliw6z0pJgxxZOEQIM8IwM8gwLwYmhjSIn4WtFMwKw8wg+rwwMUAYsDQMmylib6RMDBAGLA7DZorIGykTA4QBwgBhgDBAGCAMEAYIA4QBScPwPlueYuxv1cQAYcDCMGykiL6ZMjFAGLAsDBsp4m+mTAyYEYZ5QYaZUWWBNGylYH4Y5gVZZkaVBdK4EYYsyJRGlQXSGAxDFmRLo8oCaZwVUXB4q23fxJAFWedGEQXmRlMYkkAeRRJwzqOIARwiBGGAMEAYIAwQBggDhAHCAGFANM5KwdVZqcPpWnh/ulYeSKLh0VZxkPXh1jr6TCxEfua7eEsIohj6udbcIFsWjfcxpEGuLJpv8EmDTFl03PmWBnmy6DoSIg2yZNF5Vkoa5MjCIUKYEYaZQYZ5MTAxpEH8LGylYFYYZgbR54WJAcKApWHYTBF7I2VigDBgcRg2U0TeSJkYIAwQBggDhAHCAGGAMEAYIAxIGob32fIUY3+rJgYIAxaGYSNF9M2UiQHCgGVh2EgRfzNlYsCMMMwLMsyMKgukYSsF88MwL8gyM6oskMaNMGRBpjSqLJDGYBiyIFsaVRZI46yIgsNbbfsmhizIOjeKKDA3msKQBPIokoBzHkUM4BAhCAOEAcIAYYAwQBggDBAGCAOicVYKrs5KHU7XwvvTtfJAEg2PtoqDrA+31tFnYiHyM9/FW0IQxdDPteYG2bJovI8hDXJl0XyDTxpkyqLjzrc0yJNF15EQaZAli86zUtIgRxYOEcKMMMwMMsyLgYkhDeJnYSsFs8IwM4g+L0wMEAYsDcNmitgbKRMDhAGLw7CZIvJGysQAYYAwQBggDBAGCAOEAcIAYUDSMLzPlqcY+1s1MUAYsDAMGymib6ZMDBAGLAvDRor4mykTA2aEYV6QYWZUWSANWymYH4Z5QZaZUWWBNG6EIQsypVFlgTQGw5AF2dKoskAaZ0UUHN5q2zcxZEHWuVFEgbnRFIYkkEeRBJzzKGIAhwhBGCAMEAYIA4QBwgBhgDBAGBCNs1JwdVbqcLoW3p+ulQeSaHi0VRxkfbi1jj4TC5Gf+S7eEoIohn6uNTfIlkXjfQxpkCuL5ht80iBTFh13vqVBniy6joRIgyxZdJ6VkgY5snCIEGaEYWaQYV4MTAxpED8LWymYFYaZQfR5YWKAMGBpGDZTxN5ImRggDFgchs0UkTdSJgYIA4QBwgBhgDBAGCAMEAYIA5KG4X22PMXY36qJAcKAhWHYSBF9M2VigDBgWRg2UsTfTJkYMCMM84IMM6PKAmnYSsH8MMwLssyMKgukcSMMWZApjSoLpDEYhizIlkaVBdI4K6Lg8FbbvokhC7LOjSIKzI2mMCSBPIok4JxHEQM4RAjCAGGAMEAYIAwQBggDhAHCgGiclYKrs1KH07Xw/nStPJBEw6Ot4iDrw6119JlYiPzMd/GWEEQx9HOtuUG2LBrvY0iDXFk03+CTBpmy6LjzLQ3yZNF1JEQaZMmi86yUNMiRhUOEMCMMM4MM82JgYkiD+FnYSsGsMMwMos8LEwOEAUvDsJki9kbKxABhwOIwbKaIvJEyMUAYIAwQBggDhAHCAGGAMEAYkDQM77PlKcb+Vk0MEAYsDMNGiuibKRMDhAHLwrCRIv5mysSAGWGYF2SYGVUWSMNWCuaHYV6QZWZUWSCNG2HIgkxpVFkgjcEwZEG2NKoskMZZEQWHt9r2TQxZkHVuFFFgbjSFIQnkUSQB5zyKGMAhQhAGCAOEAcIAYYAwQBggDBAGROOsFFydlTqcroX3p2vlgSQaHm0VB1kfbq2jz8RC5Ge+i7eEIIqhn2vNDbJl0XgfQxrkyqL5Bp80yJRFx51vaZAni64jIdIgSxadZ6WkQY4sHCKEGWGYGWSYFwMTQxrEz8JWCmaFYWYQfV6YGCAMWBqGzRSxN1ImBggDFodhM0XkjZSJAcIAYYAwQBggDBAGCAOEAcKAI9L/OKbd63V9o/2777m1BmtoWcPIoZAlZ57WX47PH9UarOEHE+N3efRdAmuwhu3CmH8xxi6CNVjDdv/xPXPpo/8ua7CG7SbGrO+J+xfBGqxhu59r736MGZfBGqxhw/sYdz7KrMtgDdaw4Q0+O2Nr2G0Nm9z5HrrNUqzBGn7xroG682PpKy6DNVjDhmelej7asls31mANDhHCI8Jo7X7l94M1WMOGE6PlI66+DNZgDbZS8IwwPvX/je8Ha7AGEwOEAY8N491w/NbgtAZrMDFAGPDYMP4akN8cnNZgDSYGCAOEAcKAb/gHs9n5aMqw88wAAAAASUVORK5CYII=");
  mask-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYwAAAHOCAQAAAAhoPamAAAIjUlEQVR42u3dwbarKBBAUeH//zlv+AZ6E0BIsGrvYQ96Edc9KTqiXY6feb2u/mkp1mANv1rDf/UAhAHCAGGAMCBmGNe/Qfz9z63BGkwMsJUCYTQMyG8NT2uwBhMDhAGPDOPTcPzG8LQGazAxYP8wWvpf/R1hDdawWRitH3HlpbAGa7CVgv3D6Ol+1XeENVjDZmH0frQVl8IarGGzMEY+1uxLYQ3WsFkYox9p5qWwBmvYLIw7H2fWpbAGa9gsjLsfZcalsAZr6FF2j2LGi1SswRo2mxh2xtaw2xp+PjHWLLzve8IarGGjMNbvAT9fDmuwhh+E8XpdL+W7dyetwRpa1jCSTdn7RzP4zTRxiBCEAcIAYYAwQBggDBAGCAOEASnDcCCEpxj7WzUxQBiwMAwbKaJvpkwMEAYsC8NGivibKRMDZoRhXpBhZlRZIA1bKZgfhnlBlplRZYE0boQhCzKlUWWBNAbDkAXZ0qiyQBpH77trRcGR8q22VRaYGx0TQxRknhtFEnDOo0gCznkUMYBDhCAMEAYIA4QBwgBhgDBAGCAMiMZZKbg6K3U4XQvvT9fKA0k0PNoqDrI+3FpHn4mFyM98F28JQRRDP9eaG2TLovE+hjTIlUXzDT5pkCmLjjvf0iBPFl1HQqRBliw6z0pJgxxZOEQIM8IwM8gwLwYmhjSIn4WtFMwKw8wg+rwwMUAYsDQMmylib6RMDBAGLA7DZorIGykTA4QBwgBhgDBAGCAMEAYIA4QBScPwPlueYuxv1cQAYcDCMGykiL6ZMjFAGLAsDBsp4m+mTAyYEYZ5QYaZUWWBNGylYH4Y5gVZZkaVBdK4EYYsyJRGlQXSGAxDFmRLo8oCaZwVUXB4q23fxJAFWedGEQXmRlMYkkAeRRJwzqOIARwiBGGAMEAYIAwQBggDhAHCAGFANM5KwdVZqcPpWnh/ulYeSKLh0VZxkPXh1jr6TCxEfua7eEsIohj6udbcIFsWjfcxpEGuLJpv8EmDTFl03PmWBnmy6DoSIg2yZNF5Vkoa5MjCIUKYEYaZQYZ5MTAxpEH8LGylYFYYZgbR54WJAcKApWHYTBF7I2VigDBgcRg2U0TeSJkYIAwQBggDhAHCAGGAMEAYIAxIGob32fIUY3+rJgYIAxaGYSNF9M2UiQHCgGVh2EgRfzNlYsCMMMwLMsyMKgukYSsF88MwL8gyM6oskMaNMGRBpjSqLJDGYBiyIFsaVRZI46yIgsNbbfsmhizIOjeKKDA3msKQBPIokoBzHkUM4BAhCAOEAcIAYYAwQBggDBAGCAOicVYKrs5KHU7XwvvTtfJAEg2PtoqDrA+31tFnYiHyM9/FW0IQxdDPteYG2bJovI8hDXJl0XyDTxpkyqLjzrc0yJNF15EQaZAli86zUtIgRxYOEcKMMMwMMsyLgYkhDeJnYSsFs8IwM4g+L0wMEAYsDcNmitgbKRMDhAGLw7CZIvJGysQAYYAwQBggDBAGCAOEAcIAYUDSMLzPlqcY+1s1MUAYsDAMGymib6ZMDBAGLAvDRor4mykTA2aEYV6QYWZUWSANWymYH4Z5QZaZUWWBNG6EIQsypVFlgTQGw5AF2dKoskAaZ0UUHN5q2zcxZEHWuVFEgbnRFIYkkEeRBJzzKGIAhwhBGCAMEAYIA4QBwgBhgDBAGBCNs1JwdVbqcLoW3p+ulQeSaHi0VRxkfbi1jj4TC5Gf+S7eEoIohn6uNTfIlkXjfQxpkCuL5ht80iBTFh13vqVBniy6joRIgyxZdJ6VkgY5snCIEGaEYWaQYV4MTAxpED8LWymYFYaZQfR5YWKAMGBpGDZTxN5ImRggDFgchs0UkTdSJgYIA4QBwgBhgDBAGCAMEAYIA5KG4X22PMXY36qJAcKAhWHYSBF9M2VigDBgWRg2UsTfTJkYMCMM84IMM6PKAmnYSsH8MMwLssyMKgukcSMMWZApjSoLpDEYhizIlkaVBdI4K6Lg8FbbvokhC7LOjSIKzI2mMCSBPIok4JxHEQM4RAjCAGGAMEAYIAwQBggDhAHCgGiclYKrs1KH07Xw/nStPJBEw6Ot4iDrw6119JlYiPzMd/GWEEQx9HOtuUG2LBrvY0iDXFk03+CTBpmy6LjzLQ3yZNF1JEQaZMmi86yUNMiRhUOEMCMMM4MM82JgYkiD+FnYSsGsMMwMos8LEwOEAUvDsJki9kbKxABhwOIwbKaIvJEyMUAYIAwQBggDhAHCAGGAMEAYkDQM77PlKcb+Vk0MEAYsDMNGiuibKRMDhAHLwrCRIv5mysSAGWGYF2SYGVUWSMNWCuaHYV6QZWZUWSCNG2HIgkxpVFkgjcEwZEG2NKoskMZZEQWHt9r2TQxZkHVuFFFgbjSFIQnkUSQB5zyKGMAhQhAGCAOEAcIAYYAwQBggDBAGROOsFFydlTqcroX3p2vlgSQaHm0VB1kfbq2jz8RC5Ge+i7eEIIqhn2vNDbJl0XgfQxrkyqL5Bp80yJRFx51vaZAni64jIdIgSxadZ6WkQY4sHCKEGWGYGWSYFwMTQxrEz8JWCmaFYWYQfV6YGCAMWBqGzRSxN1ImBggDFodhM0XkjZSJAcIAYYAwQBggDBAGCAOEAcKAI9L/OKbd63V9o/2777m1BmtoWcPIoZAlZ57WX47PH9UarOEHE+N3efRdAmuwhu3CmH8xxi6CNVjDdv/xPXPpo/8ua7CG7SbGrO+J+xfBGqxhu59r736MGZfBGqxhw/sYdz7KrMtgDdaw4Q0+O2Nr2G0Nm9z5HrrNUqzBGn7xroG682PpKy6DNVjDhmelej7asls31mANDhHCI8Jo7X7l94M1WMOGE6PlI66+DNZgDbZS8IwwPvX/je8Ha7AGEwOEAY8N491w/NbgtAZrMDFAGPDYMP4akN8cnNZgDSYGCAOEAcKAb/gHs9n5aMqw88wAAAAASUVORK5CYII=");
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
   /* the stamp perforation mask, generated */

:root {
  --stage-w: 1440px;
  /* --stage-h was declared here and never read: both stages take their
     proportions from aspect-ratio. A constant that describes a layout and is
     not wired to it is the bug this project already recorded this week. */
  --head-h: 128px;          /* the mock's navy bar, 103 mock px */
  --rule-h: 8px;            /* the mock rows 103 to 110 at 1.24031, and the
                               number that keeps the header at exactly 136,
                               so everything below lands on the mock grid */

  --navy: #1F314E;          /* sampled from the mock's own nav bar */
  --gold: #B8893C;
  --gold-light: #F4D088;    /* the highlight in the mock's own gilt rule */
  --brown: #6B4F3A;
  --red: #C8102E;
  --card: #F9F3E5;
  --ground: #F4EFE5;        /* the mock's paper, behind the tile */
  --navy-deep: #16243C;     /* the one pressed navy. #1A2842 was a second one */
  --gilt: #D8B87E;          /* the light gold that CARRIES TEXT on navy, 6.89:1.
                               Distinct from --gold-light, which is a highlight
                               in the mock's own rule and never sets type */

  /* Ink on navy. Seven near-whites had accreted one at a time (#F2EDE1,
     #F6F1E6, #EFE9DC, #F4EFE3, #F0EADD, #E7E0D0, #B9B0A0) and no eye can tell
     the first five apart. These three are the ones whose contrast was already
     measured and passed, so nothing needed re-proving, only naming. */
  --on-navy: #F2EDE1;       /* primary, 11.18:1 */
  --on-navy-2: #E7E0D0;     /* secondary, the footer's facts */
  --on-navy-muted: #B9B0A0; /* small print, 6.08:1 */

  /* Motion. One curve and two durations for the whole page, so nothing has to
     invent its own. The curve is a decelerating ease-out: things arrive with
     weight and settle, which is how paper behaves. */
  --ease: cubic-bezier(0.32, 0.72, 0, 1);
  --t-fast: 160ms;
  --t-slow: 520ms;

  /* Depth. A single 26px blur thrown 14px down is Material elevation, and this
     page is about printed paper. Paper on paper casts a tight dark contact
     shadow at its edge and a much wider, fainter one beyond it, so that is two
     shadows, not one. Same total darkness. */
  --shadow-card: 0 1px 2px rgba(43, 33, 24, 0.22), 0 12px 24px rgba(43, 33, 24, 0.11);
  --shadow-stamp: drop-shadow(0 1px 1px rgba(43, 33, 24, 0.26)) drop-shadow(0 6px 10px rgba(43, 33, 24, 0.14));

  --rule-gold: rgba(184, 137, 60, 0.55);
  --rule-brown: rgba(107, 79, 58, 0.34);

  --roman: "Tinos", "Times New Roman", Times, serif;
  --type: "Courier Prime", "Courier New", monospace;

  --pad: 48px;              /* the mock's own left margin, 38 mock px */
  --bl: 8px;                /* baseline */
  --section: 104px;         /* 13 baselines between objects */
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  overflow-x: clip;
  background-color: var(--ground);
}

body {
  font-family: var(--type);
  color: var(--navy);
  -webkit-font-smoothing: antialiased;
  /* One continuous sheet of the mock's own paper, under the whole page.
     THE TILE IS MIRRORED. The 600 px crop is a crop, not a tile: its right edge
     has no reason to continue into its left, and measured on the file the jump
     across that wrap is SEVEN TIMES a normal step between neighbouring columns,
     which drew a visible ruled line every 372 px down the whole page.
     `_build/make_paper_tile.py` lays the crop beside its own mirror image, so
     both joints are a column against itself and the seam measures 0.00. Not one
     pixel of the mock's paper is altered; every pixel is the original's, once
     forwards and once backwards. The tile is twice as wide, so the size is too,
     and the grain is at exactly the scale it was. */
  background-image: url("https://static.wixstatic.com/media/37bf5c_ea396aea8faa408dab50fa6ceb094415~mv2.png");
  background-size: 744px 74px;
  background-repeat: repeat;
}

/* height: auto is LOAD BEARING, not tidiness. Round 4 put real width and height
   attributes on every image for CLS, and an attribute height plus max-width and
   no CSS height means the browser honours BOTH: the width is capped and the
   height is not, so the picture is squashed. It cost the hero's fourth line,
   "Post Office.", which was crushed out of its own box until this was added.
   Every element that needs a real height sets one on a more specific selector,
   so this only ever governs the images that had no height of their own. */
img { display: block; max-width: 100%; height: auto; }
figure, p, h1, h2, h3, ul { margin: 0; }
ul { padding: 0; list-style: none; }

:focus-visible { outline: 3px solid var(--red); outline-offset: 3px; }
.head :focus-visible, .env :focus-visible { outline-color: var(--gold-light); }

.skip {
  position: absolute; left: -9999px; top: 0; z-index: 99;
  background: var(--navy); color: var(--ground); padding: 12px 16px;
  font: 400 13px/1 var(--roman); letter-spacing: 0.14em;
}
.skip:focus { left: 0; }

/* Present for a screen reader, absent on the page. The reviews section is a
   single struck mark and a visible heading over it would be clutter, but
   [hidden] would take the heading out of the outline altogether. */
.vh {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
}

.wrap { width: min(100%, var(--stage-w)); margin: 0 auto; padding: 0 var(--pad); }

/* ================================================================ NAV

   The wordmark is still the mock's own pixels, cut at x 600 of the strip
   by _build/cut_nav.py. The mock's three links are dropped: a bar made of
   pixels has no anchors, no hover, no keyboard focus, no crawlable href
   and no way to show a current page across seven pages. They are replaced
   by live text in Tinos, which is the face measured against the mock's
   own lettering in _build/_navfont/.
   ================================================================= */

.head { position: relative; z-index: 20; }

.head__bar {
  position: relative;
  height: var(--head-h);
  background: var(--navy);
}

/* The mock carries a gilt rule under the bar, mock rows 103 to 110, which
   round 3 had dropped. It is the mock's own pixels, not a CSS gradient: a
   hand-mixed gradient measured 60 of 255 against the mock's own and the cut
   measures under 3. The rule does not vary along its length, so stretching
   it across any width costs nothing. */
.head__rule {
  height: var(--rule-h);
  background-image: url("https://static.wixstatic.com/media/37bf5c_9c28807dac84487486ce50b61d7c762f~mv2.png");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}

.head__inner {
  position: relative;
  width: min(100%, var(--stage-w));
  height: 100%;
  margin: 0 auto;
  display: flex;
  align-items: center;
}

/* At 1440 the crest and the wordmark are placed at the mock's own pixel
   positions, so the wrapper must not introduce a box of its own. */
.head__brand { display: contents; }

/* the crest is the Home link, at the mock's own position and size */
.head__home {
  position: absolute; left: 44px; top: 3px;
  width: 122px; height: 122px;
  display: block;
}
/* colour: these two anchors hold nothing but an image and a clipped label, so
   no ink of theirs can render. Set anyway, so "no link on this page is the
   browser's default blue" is a check that can simply be true. */
.head__home, .postcard__enquire { color: inherit; text-decoration: none; }
.head__home img { width: 100%; height: 100%; object-fit: contain; }

.head__word {
  position: absolute; left: 243px; top: 0;
  width: 371.8px; height: var(--head-h);
}

.head__links {
  margin-left: auto;
  margin-right: var(--pad);
  display: flex;
  align-items: center;
  gap: 32px;
}

.head__links a {
  font-family: var(--roman);
  font-size: 19px;
  line-height: 24px;
  color: var(--on-navy);
  text-decoration: none;
  white-space: nowrap;
  padding-bottom: 8px;
  border-bottom: 1px solid transparent;
  transition: border-color var(--t-fast) var(--ease);
}
.head__links a:hover, .head__links a:focus-visible { border-bottom-color: var(--gold-light); }
.head__links a[aria-current="page"] { border-bottom-color: var(--gold); }

/* `.head__links a.head__cta`, NOT `.head__cta`. The Enquire button IS a link
   inside `.head__links`, so `.head__links a` above matched it too and, at
   (0,2,0) against (0,1,0), beat every property this rule and that one both set:
   the button was drawn at 19 px not 18, with 8 px of bottom padding instead of
   12, and with `border-bottom: 1px solid transparent` over its gold border, so
   the box on the navy bar was missing its bottom edge. Visible in the round 9
   proofs once it was pointed at. Codex, 2026-09-21. The class is now qualified
   by the element and the row it sits in, which puts it above the row's rule
   without an `!important` anywhere. */
.head__links a.head__cta {
  font-family: var(--roman);
  font-size: 18px;
  line-height: 24px;
  color: var(--on-navy);
  text-decoration: none;
  white-space: nowrap;
  padding: 12px 24px;
  border: 1px solid var(--gold);
  background: rgba(216, 184, 126, 0.15);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.head__links a.head__cta:hover,
.head__links a.head__cta:focus-visible { background: var(--gold); color: var(--navy-deep); }

.head__burger { display: none; }

/* =============================================================== HERO

   The mock's canvas, in TWO parts. Brief v3 moves the 1891 square up out of
   the lower page and sets it between the TELEGRAM strip and the postcard row,
   so the canvas is cut at the mock's own row 828, halfway down the band of
   plain paper the mock leaves there. Nothing is redrawn and nothing is
   re-cut; the two halves keep the mock's coordinates, each divided by its own
   height rather than by one.

   Each part caps at the mock's own 1440 and SHRINKS with the window rather
   than being clipped by it, which is why every child is placed as a per cent.
   The pixel version was wrong between 901 and 1439: the canvas stayed 1440
   wide while the document clipped the overflow, so at 1024 most of the
   headline and much of the postcard were not on the screen. Found by Codex.
   ================================================================ */

.stage {
  position: relative;
  width: min(100%, var(--stage-w));
  margin: 0 auto;
  overflow: hidden;
}

/* the mock's rows 110 to 820: the stamp, the headline and the strip */
.stage--a { aspect-ratio: 1440 / 881; }

/* the mock's rows 836 to its foot: the print mount and the postcard */
.stage--b { aspect-ratio: 1440 / 644; }

.stage img { display: block; }
.at { position: absolute; }
.grp { position: absolute; }
.grp__el { position: absolute; }

/* group box: the mock's (38,126) to (810,712) */
.grp--stamp { left: 3.2639%; top: 2.2701%; width: 66.4583%; height: 82.5199%; }

.stamp-frame { left: 0; top: 0; width: 87.31%; height: 100%; }

/* Our photograph sits UNDER the frame and simply fills the stamp's area; the
   frame's own outline decides what shows. No clipping, no pasted edge, and the
   caption, the 1891 and the cancel are all part of the frame above it. */
.stamp-photo {
  left: 1.5%; top: 4%; width: 84%; height: 92%;
  object-fit: cover; object-position: 50% 52%;
}

/* the cancel goes back on top: the frame's copy of its ink sat over the mock's
   photograph and was cut away with it, so the struck mark is this layer */
.stamp-postmark { left: 60.49%; top: 0.34%; width: 25.52%; height: 29.69%; }
.stamp-waves    { left: 83.94%; top: 1.71%; width: 15.80%; height: 15.70%; }

.headline { left: 61.3194%; top: 13.5074%; width: 36.1806%; height: 63.6776%; }
.flourish { left: 73.4028%; top: 74.3474%; width: 14.3056%; height: 5.9024%; }

.telegram { left: 1.5278%; top: 87.6277%; width: 96.8750%; height: 11.5777%; }

/* group box: the mock's (36,846) to (512,1300) */
.grp--print { left: 3.1250%; top: 1.8634%; width: 40.9722%; height: 87.4224%; }

.print-frame { left: 0; top: 0; width: 100%; height: 100%; }
.print-photo {
  left: 1%; top: 1.5%; width: 98%; height: 90%;
  object-fit: cover; object-position: 50% 50%;
}

/* The regenerated back is 2336 x 1744 against the cut panel's 1200 x 876, so the
   box keeps its width and takes the new ratio rather than squashing the card. */
.postcard { left: 47.3611%; top: 0; width: 51.6667%; height: 86.1801%; }
.postcard img { width: 100%; height: 100%; }

/* The Enquire button is part of the generated panel, so the link is laid over
   its measured box rather than drawn again. The label is carried by a .vh span
   for a screen reader, because the panel already prints it on the page.

   The first version shrank the label to 1px and made it transparent, which is
   the wrong way to hide text: it leaves real 1px type in the document. The
   clip-path pattern in .vh is the one that hides it properly. */
.postcard__enquire {
  position: absolute;
  left: 11.04%; top: 79.82%; width: 28.90%; height: 12.39%;
  display: block;
  border-radius: 3px;
}
.postcard__enquire:focus-visible { outline-offset: 2px; }

/* ====================================================== POSTAL OBJECTS

   One object per section, on the same paper, with the same marks.
   ===================================================================== */

.leaf { padding-top: var(--section); }
.leaf--tight { padding-top: 32px; padding-bottom: 32px; }

/* the small letterspaced caps the mock uses for POST CARD and TELEGRAM */
.mark {
  font-family: var(--roman);
  font-size: 15px;
  line-height: 24px;
  font-weight: 700;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: var(--brown);
}

.card {
  background: var(--card);
  box-shadow: var(--shadow-card);
  outline: 1px solid rgba(184, 137, 60, 0.42);
  outline-offset: -1px;
}

 /* A LINK AND A DECORATIVE RULE WERE THE SAME INK. Gold at 1px draws the rule
    after every section heading, the rule across the menu card's head and the
    rule across the stamp sheet, AND the underline under every link, so a
    visitor could not tell one from the other until they hovered. nintendo-2001's
    rule, and it is the right one: warm colour has to mean "act here".

    So a link's underline is now 2px where a decorative rule is 1px. Same gold,
    same place, twice the weight: the only thing on the page wearing a heavy
    gold underline is something you can click. */
.link {
  display: inline-block;
  font-family: var(--roman);
  font-size: 19px;
  line-height: 24px;
  color: var(--navy);
  text-decoration: none;
  border-bottom: 2px solid var(--gold);
  padding: 8px 0 8px;          /* 44px tall, the touch-target floor */
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.link:hover, .link:focus-visible { color: var(--red); border-bottom-color: var(--red); }

/* --------------------------------------------- the menu, a big postcard */

.menucard {
  display: grid;
  grid-template-columns: 560px 1fr;
  min-height: 496px;
}

.menucard__front { position: relative; overflow: hidden; margin: 16px 0 16px 16px; }
.menucard__front img { width: 100%; height: 100%; object-fit: cover; }

.menucard__back { padding: 40px; display: flex; flex-direction: column; }

.menucard__head { display: flex; align-items: baseline; gap: 24px; }
.menucard__head::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--gold); }

.menucard h2 {
  font-family: var(--roman);
  font-size: 27px;
  line-height: 32px;
  font-weight: 400;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--navy);
}

.course { margin-top: 32px; }
.course__name {
  font-family: var(--type);
  font-size: 14px;
  line-height: 24px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brown);
}

.dish {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--type);
  font-size: 16px;
  line-height: 32px;
  color: var(--navy);
}
.dish::before {
  content: "";
  order: 2;
  flex: 1 1 auto;
  margin-bottom: 5px;
  border-bottom: 1px dotted rgba(107, 79, 58, 0.55);
}
.dish b { order: 3; font-weight: 400; font-variant-numeric: tabular-nums; }

/* brief v3 puts "See the full menu" under each list rather than one button
   at the foot of the card */
.course__link { margin-top: 16px; }
.course + .course { margin-top: 32px; }

/* ------------------------------------- 1891, one row under the strip */

/* Brief v3 moved this up from below the menu and asked for it smaller. One
   row, so the postmark, the line and the link all read at a glance rather
   than filling a card of their own. */
.square {
  display: grid;
  grid-template-columns: 116px 1fr auto;
  align-items: center;
  gap: 32px;
  padding: 24px 32px;
}

.square__postmark { width: 116px; height: auto; opacity: 0.92; transform: rotate(-5deg); }

.square .square__date {
  font-family: var(--type);
  font-size: 13px;
  line-height: 24px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brown);
}

.square__body {
  margin-top: 4px;
  font-family: var(--roman);
  font-size: 23px;
  line-height: 32px;
  color: var(--navy);
}

.square__link { white-space: nowrap; }

/* ------------------------------------------- bread, the co-brand postcard

   Rebuilt 2026-09-16 out of our own printed A6 card. The lockup, the words,
   the four loaves, the wheat and the order lines are the card's; only the
   ground, the rules and the gilt are the website's.

   ONE COLOUR ON THIS PAGE IS NOT FROM THE LOCKED PALETTE: the chip's red,
   #A9403A, which is the partner's mark as it is already printed. Repainting
   someone else's wordmark in our red would be redrawing their mark, so it
   stays as printed and is called out in the README.
   ------------------------------------------------------------------------ */

.bread { padding: 32px 40px 40px; }

.bread__lockup {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--rule-gold);
}

.bread__crest { width: 96px; height: 96px; object-fit: contain; }

.bread__collab {
  font-family: var(--roman);
  font-style: italic;
  font-size: 12px;
  line-height: 16px;
  letter-spacing: 0.1em;
  text-align: center;
  color: var(--brown);
}

/* the partner's chip, reproduced from the printed card */
.bbchip {
  display: inline-block;
  background: #A9403A;
  border-radius: 6px;
  padding: 11px 26px 10px;
  text-align: center;
  line-height: 1;
}
/* The chip is a grotesque, not the page's serif, because that is what the
   partner's mark is. The stack is the printed card's own, from
   build_flyer_breadmenu.py, with a universal fallback added. */
.bbchip span {
  display: block;
  font-family: "Liberation Sans", Arial, "DejaVu Sans", sans-serif;
  font-weight: 700;
}
.bbchip__top { font-size: 11px; letter-spacing: 0.36em; color: #D9B77C; text-transform: uppercase; }
.bbchip__name { margin-top: 8px; font-size: 27px; letter-spacing: 0.06em; color: #F7F2E7; text-transform: uppercase; }
.bbchip__sub { margin-top: 3px; font-size: 17px; letter-spacing: 0.5em; padding-left: 0.5em; color: #F7F2E7; text-transform: uppercase; }
.bbchip__since { margin-top: 8px; font-size: 11px; letter-spacing: 0.4em; color: #D9B77C; text-transform: uppercase; }

.bread__body {
  margin-top: 32px;
  display: grid;
  grid-template-columns: minmax(0, 420px) minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}

/* the empty frame for the photograph David is sending. It says what it is
   rather than standing something else in. */
.bread__slot {
  aspect-ratio: 4 / 3;
  border: 2px dashed var(--gold);
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 24px;
  background: rgba(184, 137, 60, 0.05);
}

.bread__slot-mark {
  display: block;
  font-family: var(--roman);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: var(--brown);
}
.bread__slot-note {
  display: block;
  margin-top: 16px;
  font-family: var(--type);
  font-size: 13px;
  line-height: 24px;
  color: var(--brown);
}

/* ----------------------------------------------------- THE GILT LETTERING

   Every headline on this site is the mock's own engraved gilt, generated line
   by line against it and knocked off its paper. NOT typeset: eighteen faces
   were rendered against that lettering on 2026-09-15 and none matched, because
   it was drawn by an image model rather than cut as a font.

   Each file is normalised by `_build/make_gilt.py` so ONE LINE of ink is the
   same height in every file. That is what lets a single `height` here give
   every headline the same lettering size whatever the words say.

   Sources and the generation ID of every line:
   `_references vintage postal 2026-09-15 (do not bin)/lettering/`.
   ------------------------------------------------------------------------ */

.gilt-h { margin: 0; font-size: 0; line-height: 0; }

/* A <picture> is an INLINE element and the image inside it is a block, which is
   an anonymous-box arrangement rather than a plain one. Making the picture a
   block puts the image back in ordinary flow, so `margin: 0 auto` centres it
   and the h2's own box is the image's box. Added in round 6, when the bread
   headline gained a phone-only source; on a desktop it changes nothing, because
   the image inside was already `display: block` and the h2 already had
   `font-size: 0`. Proved by a pixel diff of the card at 1440. */
.gilt-h picture { display: block; }

 /* object-fit: contain is the guard for a FIXED-HEIGHT image whose width can
    be capped. When max-width bites, the box narrows and the height does not, so
    without this the lettering is squashed. "Six views" was 6 per cent narrow at
    390 px, where the sheet's head puts the gilt, the MOSS VALE mark and a rule
    on one line. With contain it letterboxes instead, and the letterbox is
    invisible because the lettering arrives with its paper already knocked out. */
.gilt-line { height: 60px; width: auto; max-width: 100%; object-fit: contain; }
.gilt-line--two { height: 128px; }      /* two lines of ink, so twice the box */

.gilt-h.panel__title { margin-bottom: 24px; }
.gilt-h.panel__title .gilt-line { height: 54px; }
.gilt-h.panel__title::after {
  content: "";
  display: block;
  width: 84px;
  height: 1px;
  margin-top: 24px;
  background: var(--gold);
}

.menucard__head .gilt-line { height: 46px; }
.room__title .gilt-line { height: 40px; }
.sheet__head .gilt-line { height: 40px; }

.bread__sub {
  margin-top: 24px;
  max-width: 52ch;
  font-family: var(--type);
  font-size: 16px;
  line-height: 32px;
  color: var(--navy);
}

.bread__loaves {
  margin-top: 24px;
  display: flex;
  align-items: center;
  gap: 16px;
  font-family: var(--type);
  font-size: 17px;
  line-height: 28px;
  color: var(--navy);
}
.bread__loaves .dot { color: var(--gold); }
.bread__more { color: var(--brown); }
.wheat { flex: none; width: 22px; height: 33px; }

.bread__order { margin-top: 24px; }
.bread__order-1 {
  display: block;
  font-family: var(--roman);
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: #A9403A;
}
.bread__order-2 {
  display: block;
  margin-top: 8px;
  font-family: var(--type);
  font-size: 15px;
  line-height: 24px;
  color: var(--navy);
}
.bread__order-2 a { color: inherit; border-bottom: 2px solid var(--gold); padding: 6px 0;
  display: inline-block; transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease); }
.bread__order-2 a:hover, .bread__order-2 a:focus-visible { color: var(--red); border-bottom-color: var(--red); }

/* ----------------------------------------- bread, pastries, cold cabinet */

.panel { display: grid; grid-template-columns: minmax(0, 620px) minmax(0, 1fr); align-items: stretch; }
.panel--flip .panel__pic { order: 2; margin: 16px 16px 16px 0; }
.panel--flip .panel__text { order: 1; }

.panel__pic { margin: 16px 0 16px 16px; overflow: hidden; }
.panel__pic img { width: 100%; height: 100%; min-height: 330px; object-fit: cover; }

.panel__text {
  padding: 48px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.panel__body {
  margin-top: 24px;
  max-width: 46ch;
  font-family: var(--type);
  font-size: 16px;
  line-height: 32px;
  color: var(--navy);
}

/* --------------------------------------------- the room at the back */

.room { display: grid; grid-template-columns: minmax(0, 560px) minmax(0, 1fr); align-items: stretch; }

.room__pic { margin: 16px 0 16px 16px; overflow: hidden; }
.room__pic img { width: 100%; height: 100%; min-height: 330px; object-fit: cover; }

.room__form { padding: 32px 40px; }

.room__form h2 { padding-bottom: 16px; border-bottom: 3px double var(--gold); }

.room__lines { margin-top: 8px; }

.room__lines li {
  font-family: var(--type);
 /* SENTENCE CASE, David's call 2026-09-16. These four lines were capitals at
    63 to 77 characters each and were the design checker's only four findings:
    we read words by their ascenders and descenders, and capitals remove them.
    The rules, the typewriter face and the ruled-form look all stay, so it is
    still a telegram form. */
  font-size: 16px;
  line-height: 32px;
  letter-spacing: 0.04em;
  color: var(--navy);
  padding: 8px 2px;
  border-bottom: 1px solid var(--rule-brown);
}

.room__foot {
  margin-top: 24px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 24px;
}

/* ------------------------------------------- the sheet of six stamps */

.sheet__head { display: flex; align-items: center; gap: 24px; }
.sheet__head::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--rule-gold); }

 /* The columns flex rather than sitting at a fixed 198. Six fixed columns
    plus five gaps plus the wrap's padding need 1404 px, so between 1341 and
    1403 the sixth stamp ran off the page and the document clipped it. Found
    by Codex, milestone 1. The stamp keeps its proportions from the
    aspect-ratio instead. */
.sheet {
  margin-top: 32px;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 24px;
}

/* The silhouette comes from .perf in the generated perf.css, cut at the
   mock's own gauge: 33 px pitch, 27 px scallop. A mask cannot carry its own
   shadow, so the shadow is thrown by the wrapper around it. */
.stamp6 {
  width: 100%;
  max-width: 198px;
  aspect-ratio: 198 / 231;
  background: var(--card);
  padding: 8px 8px 0;
  display: flex;
  flex-direction: column;
}

.stamp6__drop { filter: var(--shadow-stamp); }

.stamp6 img { width: 100%; height: auto; aspect-ratio: 180 / 162; object-fit: cover; }

.stamp6 figcaption {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--type);
  font-size: 13px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--brown);
}

/* ------------------------------------------- the reviews, a franked mark */

.franked { display: flex; justify-content: center; }
.franked svg { width: 780px; height: auto; transform: rotate(-1.6deg); }

/* =============================================================== FOOTER

   The franked envelope: the navy band, the gilt rule the mock puts under
   its nav repeated at the top edge, the crest, and where to find us.
   ================================================================= */

.env { margin-top: var(--section); }

.env__body { background: var(--navy); color: var(--on-navy); padding: 48px 0 40px; }

.env__grid {
  display: grid;
  grid-template-columns: 122px 1fr auto;
  gap: 40px;
  align-items: start;
}

.env__crest { width: 122px; height: 122px; object-fit: contain; }

.env__name {
  font-family: var(--roman);
  font-size: 25px;
  line-height: 32px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--on-navy);
}
.env__name small {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  letter-spacing: 0.42em;
  color: var(--gilt);
}

.env__label {
  margin-top: 24px;
  font-family: var(--roman);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: var(--gilt);
}

.env__facts { margin-top: 16px; }

/* THE PHONE AND THE EMAIL IN THE FOOTER. Round 3 carried an inline
   style="color:inherit" on the phone and left the email as plain text. Round 4
   took the inline style out, made the email a real mailto, and gave both a
   class. THE RULE WAS THEN NEVER WRITTEN, so both rendered in the browser's
   default #0000EE, underlined, on a navy ground. Caught by the playwright pass,
   not by eye. They now read as the footer's own ink with the gilt underline the
   rest of the page uses for a link. */
.env__contact {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid var(--gilt);
  padding-bottom: 2px;
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.env__contact:hover, .env__contact:focus-visible { color: var(--gilt); }
/* THE WEAREONE DESIGN LINK (Brief 36, David 2026-10-27): its tap area is 44 px tall on a phone without anything
   on the page moving. The link stays an inline line of text; an empty layer centred on it takes the tap. Only the
   one link that carries .env__credit has it. */
.env__credit { position: relative; }
.env__credit::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 44px;
  transform: translateY(-50%);
}
.env__facts li {
  font-family: var(--type);
  font-size: 15px;
  line-height: 32px;
  color: var(--on-navy-2);
}

.env__links { display: grid; gap: 8px; justify-items: end; }
.env__links a {
  font-family: var(--roman);
  font-size: 18px;
  line-height: 28px;
  color: var(--on-navy);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding: 8px 0;
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.env__links a:hover, .env__links a:focus-visible { border-bottom-color: var(--gilt); }

.env__small {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid rgba(216, 184, 126, 0.28);
  font-family: var(--type);
  font-size: 13px;
  line-height: 24px;
  color: var(--on-navy-muted);
}

/* ================================================================ 900

   The stage stops being a fixed canvas and becomes a column. Every asset
   at the top is the same file, scaled; nothing is redrawn and nothing is
   re-cut.
   ================================================================= */

/* ============================================================== 1439

   The nav is the first thing to run out of room, well before the layout
   does: the wordmark is a fixed width of the mock's own pixels and six
   items have to sit beside it. So it tightens at 1439 and collapses behind
   a burger at 1599, while the layout itself holds its shape down to 900.
   ================================================================= */

@media (max-width: 1439px) and (min-width: 1600px) {
  .head__home { left: 24px; top: 8px; width: 112px; height: 112px; }
 /* THE HEIGHT HAS TO COME DOWN WITH THE WIDTH. This block narrowed the
     wordmark to 330 px and left the base rule's height at var(--head-h), so
     between 1600 and 1439 the mock's own lettering was drawn 11 per cent
     narrow. It has been wrong since milestone 1 and no eye caught it; the
     aspect probe in _measure/aspect_r4.py did. 330 / 2.905 = 114, and 7 px of
     top centres it in the 128 px bar. */
  .head__word { left: 152px; top: 7px; width: 330px; height: 114px; }
  .head__links { gap: 24px; margin-right: 24px; }
  .head__links a { font-size: 17px; }
  .head__cta { font-size: 16px; padding: 12px 24px; }
}

@media (max-width: 1599px) {
  /* Below 1600 the header is a flex row, not a box with things placed on top
     of it. Absolute placement is right at 1440, where the wordmark sits at the
     mock's own x, and wrong here: at 320 the burger landed across the wordmark,
     and with no script the links stacked underneath the crest. As a row the
     wordmark shrinks into whatever is left, the burger always has its own
     space, and the links take a row of their own. Found by Codex, milestone 1. */
  .head__bar { height: auto; min-height: var(--head-h); }

  .head__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    height: auto;
    min-height: var(--head-h);
    padding: 0 var(--pad);
  }

  /* The brand row must never wrap. A flex line breaks BEFORE its items shrink,
     so with everything in one wrapping row the burger dropped to a second line
     at 320 and the bar grew to 110 px. Its own nowrap row makes the wordmark
     shrink instead, which is what it is there to do. */
  .head__brand {
    display: flex;
    flex: 1 0 100%;
    flex-wrap: nowrap;
    align-items: center;
    gap: 12px;
    min-height: var(--head-h);
  }

  .head__home {
    position: static;
    flex: none;
    width: calc(var(--head-h) - 14px);
    height: calc(var(--head-h) - 14px);
  }

  /* width auto plus a shrinkable flex item, so the wordmark scales down
     rather than being cropped or squashed */
  .head__word {
    position: static;
    flex: 0 1 auto;
    min-width: 0;
    width: auto;
    height: calc(var(--head-h) - 26px);
    object-fit: contain;
    object-position: left center;
  }

  /* the links collapse behind a burger. The script sets html.js, so with
     no script at all they simply stay on the page and wrap. */
  .js .head__links {
    display: none;
    position: absolute; left: 0; right: 0; top: var(--head-h);
    z-index: 30;
    margin: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--navy);
    border-top: 1px solid rgba(216, 184, 126, 0.3);
    padding: 8px var(--pad) 16px;
  }
  .js .head[data-open] .head__links { display: flex; }
  .js .head__links a { padding: 12px 0; border-bottom: 1px solid rgba(216, 184, 126, 0.18); }
  /* AND THE CURRENT PAGE KEEPS ITS GOLD RULE. The line above turns every link
     in the drawer into a row with a faint divider under it, and at (0,2,1) it
     ties `.head__links a[aria-current="page"]` and wins on source order, so on
     a phone the marker that says which page you are on was simply gone. The
     desktop bar had it and the drawer did not, which is the kind of difference
     nobody sees because nobody opens the drawer on the page they are already
     on. Codex, 2026-09-21. */
  .js .head__links a[aria-current="page"] { border-bottom-color: var(--gold); }
  .js .head__links a.head__cta { margin-top: 16px; text-align: center; }

  .js .head__burger {
    display: block;
    flex: none;
    margin-left: auto;
    background: none;
    border: 1px solid var(--gold);
    color: #F2EDE1;
    font-family: var(--roman);
    font-size: 16px;
    line-height: 20px;
    letter-spacing: 0.1em;
    padding: 12px 16px;
  }

  /* with no script the links take a full row of their own under the brand,
     and the bar grows to hold it */
  .head__links { flex: 1 0 100%; flex-wrap: wrap; gap: 8px 16px; padding: 0 0 16px; margin: 0; }
  .head__links a { font-size: 16px; }
  .head__cta { font-size: 16px; padding: 12px 16px; }
}

@media (max-width: 1240px) and (min-width: 901px) {
  /* The photo column is a fixed width up at 1440 and has to give way below it,
     or the text column is squeezed past its own padding and runs off the card.
     Found by Codex at 901. */
  .menucard { grid-template-columns: minmax(0, 40%) minmax(0, 1fr); }
  .panel { grid-template-columns: minmax(0, 46%) minmax(0, 1fr); }
  .bread__body { grid-template-columns: minmax(0, 40%) minmax(0, 1fr); gap: 32px; }
  .gilt-line { height: 50px; }
  .gilt-line--two { height: 108px; }
  .gilt-h.panel__title .gilt-line { height: 44px; }
  .room { grid-template-columns: minmax(0, 42%) minmax(0, 1fr); }
  .panel__text { padding: 32px; }
  .room__form { padding: 24px 32px 32px; }
  .sheet { grid-template-columns: repeat(3, 1fr); }
  .stamp6 { max-width: none; }
}

/* =============================================================== 900

   The stage stops being a canvas and becomes a column. Every asset at the
   top is the same file, scaled; nothing is redrawn and nothing is re-cut.
   ================================================================= */

@media (max-width: 900px) {
  :root { --pad: 20px; --section: 64px; --head-h: 72px; }

  /* the header's own sizes come from --head-h in the 1599 block above, so
     there is nothing to set here. A width: 209px override used to live here
     and it beat the flex rule's width: auto, which is how the wordmark ended
     up under the burger at 320. */

  .stage {
    width: 100%;
    height: auto;
    aspect-ratio: auto;
    display: flex;
    flex-direction: column;
    gap: 24px;
  }
  .stage--a { padding-bottom: 4px; }
  .stage--b { padding-bottom: 20px; }

  /* NOTE: the groups must stay positioned, or their children would place
     themselves against the stage instead and fly to its corners. */
  .grp { position: relative; left: auto; top: auto; width: 100%; height: auto; }
  .grp--stamp { aspect-ratio: 957 / 727; margin-top: 10px; }
  .grp--print { aspect-ratio: 590 / 563; }

  .at { position: relative; left: auto; top: auto; display: block; height: auto; }
  .headline { width: 74%; margin: 4px auto 0; }
  .flourish { width: 42%; margin: 2px auto 0; }
  .telegram { width: 96%; margin: 6px auto; }
  .postcard { width: 96%; margin: 0 auto; }

  .menucard { grid-template-columns: 1fr; min-height: 0; }
  .menucard__front { margin: 16px 16px 0; aspect-ratio: 4 / 3; }
  .menucard__back { padding: 32px 24px; }
  .menucard h2 { font-size: 22px; letter-spacing: 0.26em; }
  .dish { font-size: 14px; line-height: 28px; }

  .square { grid-template-columns: 1fr; gap: 16px; padding: 24px; }
  .square__postmark { width: 92px; }
  .square__body { font-size: 20px; line-height: 32px; }

  .bread { padding: 24px 24px 32px; }
  /* The lockup stacks rather than shrinking. Squeezing it into one row on a
     phone had pushed the chip's own lines to 8px and the collaboration line to
     10px, which is below the legibility floor: a logotype is exempt from the
     CONTRAST rule, never from being readable. Found by the design checker. */
  .bread__lockup { flex-direction: column; gap: 16px; padding-bottom: 24px; }
  .bread__crest { width: 76px; height: 76px; }
  .bread__collab { font-size: 11px; line-height: 16px; }
  .bbchip { padding: 9px 18px 8px; }
  .bbchip__top { font-size: 11px; letter-spacing: 0.22em; }
  .bbchip__name { font-size: 22px; margin-top: 7px; }
  .bbchip__sub { font-size: 14px; letter-spacing: 0.44em; padding-left: 0.44em; }
  .bbchip__since { font-size: 11px; letter-spacing: 0.26em; margin-top: 7px; }
  .bread__body { grid-template-columns: 1fr; gap: 24px; margin-top: 24px; }
  .gilt-line { height: 40px; }
  .gilt-line--two { height: 86px; }
  .gilt-h.panel__title .gilt-line { height: 36px; }
  .menucard__head .gilt-line { height: 32px; }
  .room__title .gilt-line { height: 27px; }
  .sheet__head .gilt-line { height: 28px; }
  .bread__sub { font-size: 15px; line-height: 28px; max-width: none; }
  .bread__loaves { font-size: 14px; line-height: 24px; gap: 8px; flex-wrap: nowrap; }
  .wheat { width: 16px; height: 24px; }

  .panel, .panel--flip, .room { grid-template-columns: 1fr; }
  .panel__pic, .room__pic { margin: 16px 16px 0; aspect-ratio: 4 / 3; }
  .panel--flip .panel__pic { order: 0; margin: 16px 16px 0; }
  .panel--flip .panel__text { order: 0; }
  .panel__pic img, .room__pic img { min-height: 0; }
  .panel__text { padding: 24px 24px 32px; }
  .panel__body { font-size: 15px; line-height: 28px; max-width: none; }

  .room__form { padding: 24px 24px 32px; }
  .room__lines li { font-size: 14px; line-height: 24px; letter-spacing: 0.03em; }
  .room__foot { flex-direction: column; align-items: flex-start; gap: 16px; }

  .sheet { grid-template-columns: repeat(2, 1fr); gap: 24px; }
  .stamp6 { max-width: none; }

  .franked svg { width: 100%; }

  .env__grid { grid-template-columns: 1fr; gap: 24px; }
  .env__links { justify-items: start; }
}

/* the paper tile is cut at 2x of the mock, so it is shown at half size on a
   phone for the same grain a visitor sees on a desktop */
@media (max-width: 600px) {
  body { background-size: 496px 49px; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}

/* ==================================================================== ROUND 4

   Everything below is new in round 4 (brief v4). Nothing above the mock's
   canvas changed, and nothing here draws on it.
   ===================================================================== */

/* ------------------------------------------- THE ERRAND ROW, under the strip

   David's call, 2026-09-16. The audit's first finding: there was no call to
   action anywhere in the first viewport, while the content pack asks for three.
   The approved mock has none and is not to be drawn on, so this is the TELEGRAM
   strip one row lower and made actionable: the same gold hairlines top and
   bottom, the same three cells divided by vertical rules, the same letterspaced
   caps. A visitor reads it as the next line of the same form.
   --------------------------------------------------------------------- */

.errand { margin-top: 24px; }

.errand__row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--rule-gold);
  border-bottom: 1px solid var(--rule-gold);
}

.errand__row li + li { border-left: 1px solid var(--rule-gold); }

.errand__row a {
  display: block;
  padding: 24px 8px;                /* 72px tall, well over the touch floor */
  text-align: center;
  font-family: var(--roman);
  font-size: 17px;
  line-height: 24px;
  font-weight: 700;
  letter-spacing: 0.32em;
  text-indent: 0.32em;              /* the tracking is trailing, so re-centre */
  text-transform: uppercase;
  color: var(--brown);
  text-decoration: none;
  transition: color var(--t-fast) var(--ease),
              background-color var(--t-fast) var(--ease);
}

.errand__row a:hover,
.errand__row a:focus-visible {
  color: var(--navy);
  background: rgba(184, 137, 60, 0.09);
}

/* --------------------------------------------- the menu card, flipped

   Cakes, the menu and the room all put their photograph on the left, which is
   three sections running with the picture on the same side. Flipping this one
   restores the alternation: right, left, right, left. Nothing else about the
   card changed. Same pattern as .panel--flip, which already existed.
   --------------------------------------------------------------------- */

.menucard--flip { grid-template-columns: minmax(0, 1fr) 560px; }
.menucard--flip .menucard__front { order: 2; margin: 16px 16px 16px 0; }
.menucard--flip .menucard__back { order: 1; }

/* ------------------------------------------------------------ MOTION

   Three moments and no more, each with a reason that fits in a sentence.
   frontend-design's warning is the governing one here: extra animation is
   itself a tell, so the page gets feedback, arrival, and nothing else.

   1. FEEDBACK. 160ms on every hover and focus. An interface that does not
      acknowledge the pointer feels broken, and the audit found the page had
      literally zero transitions.
   2. ARRIVAL. The postal objects fade up 16px as they enter. They are separate
      pieces of paper laid on a desk; arriving together as a wall is the thing
      that reads as a web page rather than a desk.
   3. THE POSTCARD. The same arrival plus three quarters of a degree of
      rotation, because a card dropped on a desk lands very slightly off square
      and settles. It is the only element with a rotation and it is the only one
      that is a loose card rather than a page element.

   RULES THESE OBEY. transform and opacity only, never a layout property. No
   scroll listener: IntersectionObserver, in site.js. And the hidden state is
   scoped to `.js`, so with no script every object is simply visible rather
   than invisible forever.
   --------------------------------------------------------------------- */

.js .reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity var(--t-slow) var(--ease),
              transform var(--t-slow) var(--ease);
  will-change: opacity, transform;
}

.js .reveal--card { transform: translateY(16px) rotate(-0.75deg); }

.js .reveal.is-in {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* ------------------------------------------- THE COUNTER BAR, phone only

   David's call, 2026-09-16. Airbnb's documented mobile pattern: on a phone the
   booking card becomes a bar fixed to the bottom carrying only the one action.
   For a cafe the two actions are ringing up and enquiring, and a phone is the
   device somebody standing in Argyle Street is holding.

   Hidden above 900, where the nav's own Enquire button is always in view.
   --------------------------------------------------------------------- */

 /* The bar is hidden above 900, but its links keep their colours OUTSIDE the
    media query. Inside it they were the browser's default #0000EE at every
    width where the bar does not show, which is harmless today and is exactly
    the trap that the footer's phone and email fell into an hour earlier: a
    colour that only exists in one branch is a colour waiting to leak. */
.counter { display: none; }
.counter__call { color: var(--on-navy); text-decoration: none; }
.counter__cta { color: var(--navy-deep); text-decoration: none; }

@media (max-width: 900px) {
  .counter {
    display: grid;
    grid-template-columns: 1fr auto;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    background: var(--navy);
    border-top: 1px solid rgba(216, 184, 126, 0.35);
    /* the home indicator on an iPhone sits under this bar */
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }

  .counter a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 56px;
    font-family: var(--roman);
    font-size: 16px;
    line-height: 24px;
    letter-spacing: 0.06em;
    text-decoration: none;
    transition: background-color var(--t-fast) var(--ease),
                color var(--t-fast) var(--ease);
  }

  .counter__call { color: var(--on-navy); padding: 16px; }
  .counter__call:hover, .counter__call:focus-visible { background: var(--navy-deep); }

  .counter__cta {
    padding: 16px 24px;
    background: var(--gold);
    color: var(--navy-deep);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
  }
  .counter__cta:hover, .counter__cta:focus-visible { background: var(--gold-light); }

  /* the bar must not sit over the last line of the footer */
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)); }

  /* the errand row stacks: three cells across a 390 px screen would put four
     letterspaced words on two lines each */
  .errand__row { grid-template-columns: 1fr; }
  .errand__row li + li { border-left: 0; border-top: 1px solid var(--rule-gold); }
  .errand__row a { padding: 20px 8px; font-size: 15px; letter-spacing: 0.24em; text-indent: 0.24em; }

  /* the flipped menu card stacks photograph first, exactly as .panel--flip does */
  .menucard--flip { grid-template-columns: 1fr; }
  .menucard--flip .menucard__front { order: 0; margin: 16px 16px 0; }
  .menucard--flip .menucard__back { order: 0; }
}

@media (max-width: 1240px) and (min-width: 901px) {
  .menucard--flip { grid-template-columns: minmax(0, 1fr) minmax(0, 40%); }
}

/* Reduced motion, restated for round 4's additions. The blanket rule earlier in
   this file kills the transitions; this one has to also put the reveal's
   START state back, or a visitor who asks for no motion gets a blank page. */
@media (prefers-reduced-motion: reduce) {
  .js .reveal,
  .js .reveal--card {
    opacity: 1;
    transform: none;
    will-change: auto;
  }
}

/* ================================================================== PRINT

   FOUND BY CODEX, round 4. The arrival animation holds every postal object at
   opacity 0 until an IntersectionObserver reveals it, and OPENING A PRINT
   PREVIEW IS NOT SCROLLING. A visitor who loads the page and prints it straight
   away would have got the hero and then blank paper where the bread, the menu
   and the room should be. On a cafe's page, where somebody prints the menu to
   put on a fridge, that is not a small fault.

   Print is a medium, not an afterthought, so this does three things: it puts
   every object back, it takes away the furniture that means nothing on paper,
   and it drops the shadows that a printer renders as grey smears.
   ===================================================================== */

@media print {
  .js .reveal,
  .js .reveal--card { opacity: 1 !important; transform: none !important; }

  .skip,
  .counter,
  .head__burger { display: none !important; }

  body { padding-bottom: 0; }

  .card { box-shadow: none; }
  .stamp6__drop { filter: none; }

  /* Each postal object is one thing, so it should not be torn across two
     sheets. The errand row was splitting with SEE THE MENU and ENQUIRE on one
     page and FIND US on the next. */
  .card, .errand__row, .sheet, .franked, .stamp6__drop { break-inside: avoid; }
}

/* ================================ ROUND 6, M1a: THE PHONE CENTRES THE POSTCARDS

   David's phone review, 2026-09-16, carried into brief 5 addendum 1 and run at
   last in round 6: "on the phone it's better if it's in the middle... we put
   Fresh Bread, Baked Daily just under the line, the gold line where you have our
   logo and the Brasserie Bread logo, in one line and centre it... the photo and
   what we are saying... in the centre, and even all of these should be centred.
   We have to do this across all the postcards: cakes and sandwiches, fresh
   pastries, the menu, and the room at the back."

   PHONE ONLY, and that is his own decision through the question tool: the
   desktop postcards stay as they are. Every rule below therefore lives inside
   the 900 px query, and nothing above it is touched. The desktop page is byte
   for byte what he accepted.

   WHAT IS CENTRED: the gilt headline and the hairline under it, the running
   copy, the loaves line, the section names, and the action at the foot of each
   card.

   WHAT IS NOT, and it is written up for David rather than decided quietly: a
   PRICE ROW. The menu teaser's dishes are a name, a dotted leader and a figure,
   and the leader IS the alignment. Centre the row and the dots stop joining the
   dish to its price, which is the one thing that row exists to do. The four big
   postcards on menu.html carry the same idiom and are left alone for the same
   reason.

   THE ONE REORDER IS BREAD'S, and it is the one David actually described. Its
   headline sat UNDER a 4:3 photograph frame, so on a phone the card opened with
   an empty dashed box and did not name itself until four hundred pixels later.
   The headline moves up under the co-brand rule, where he asked for it. No other
   card has a logo rule, and every one of them already names itself directly
   under its own photograph, so their order is unchanged.
   ===================================================================== */

@media (max-width: 900px) {

  /* ---------------------------------------------------------- bread

     `display: contents` on the text column, so its four children and the
     photograph frame become ONE flex column and the headline can be ordered
     above the frame. The element it removes carries no background, no border,
     no padding and no label, so there is nothing to lose with the box. The
     alternative was moving the h2 in the markup, which would have changed the
     desktop grid, and the desktop is not to move. */
  .bread__body { display: flex; flex-direction: column; gap: 0; }
  .bread__text { display: contents; }

  .bread__text > .gilt-h { order: 1; text-align: center; }
  /* THE PHONE TAKES GILT LINE 17, which is the same words on ONE line of ink,
     so the `--two` height that reserves two lines has to come off. 40 px is the
     height every other single-line headline takes at this width, so the lead
     card's headline is now the same size as the rest of them rather than twice
     it. The <picture> in the markup is what swaps the file; this swaps the box
     that holds it. */
  .bread__text > .gilt-h .gilt-line { height: 40px; margin: 0 auto; }
  .bread__slot  { order: 2; margin-top: 24px; }
  .bread__sub   { order: 3; text-align: center; }
  .bread__loaves { order: 4; justify-content: center; text-align: center; }
  .bread__order { order: 5; text-align: center; }

  /* ------------------------------------- fresh pastries, cakes and sandwiches */

  .panel__text { align-items: center; text-align: center; }
  .gilt-h.panel__title { text-align: center; }
  .gilt-h.panel__title .gilt-line { margin: 0 auto; }
  .gilt-h.panel__title::after { margin-left: auto; margin-right: auto; }

  /* ------------------------------------------------------ the menu teaser

     The head is a baseline row at 1440: gilt, then a hairline running to the
     right edge. Stacked and centred, that hairline has to stop growing or a
     `flex: 1 1 auto` in a COLUMN grows it down the card instead of across it.
     It becomes the same 84 px centred rule the panel titles already use. */
  .menucard__head { flex-direction: column; align-items: center; gap: 16px; }
  .menucard__head::after { flex: none; width: 84px; }
  .menucard__head .gilt-line { margin: 0 auto; }
  .course__name { text-align: center; }
  .course__link { text-align: center; }

  /* -------------------------------------------------- the room at the back */

  .room__form h2 { text-align: center; }
  .room__form h2 .gilt-line { margin: 0 auto; }
  .room__lines li { text-align: center; }
  .room__foot { align-items: center; text-align: center; }
}

/* THE WHEAT EARS COME OFF ONLY WHERE THEY NO LONGER EARN THEIR PLACE, which is
   what the addendum asks: "kept if they fit on one line, dropped if not".

   Measured, not guessed. The loaves line is 55 characters at 14 px in Courier
   Prime, which is 0.6 em a character: 55 x 8.4 = 462 px of type. The two ears
   and their gaps add 48. The card's inner width is the viewport less 40 px of
   page padding and 48 px of card padding. So the line holds one row with the
   ears above 558 px and without them above 510, and below that it wraps
   whatever we do. 600 is the breakpoint this stylesheet already uses for the
   paper, it sits above both numbers, and a wrapped line with an ear stranded at
   each end is the thing to avoid. */
@media (max-width: 600px) {
  .bread__loaves .wheat { display: none; }
}

/* ============================ ROUND 6, M1b: VARIANT A. DAVID'S PICK, 2026-09-17

   He saw a grey line crossing SEE THE MENU on his phone. It is not a rule and it
   is not the errand row's own border: it is THE PAPER. The mock's 600 x 120 crop
   carries a dark band across its first eighteen rows, a 21-of-255 swing in row
   mean against a flat 238 for the rest, and tiled at 49 px on a 390 px screen
   that band prints a soft grey rule across the page every 49 px. One of them ran
   through ENQUIRE and FIND US.

   He was shown both ways out, side by side at 390, in
   `_proofs/round6/00_errand-row_A-vs-B.png`, and picked A: the row gets its own
   cream card and the paper stays exactly as the mock has it. The paper's line then
   runs BEHIND the card instead of through the words.

   Variant B, the band cut out of the paper itself, is built and is one line away:
   `_build/make_paper_tile_plain.py` and the tile it emits,
   `assets/gpt/paper-tile-plain.png`, are kept. Nothing points at them.

   THE TWO GOLD HAIRLINES COME OFF. They are the telegram strip's, repeated one row
   lower so the errand row reads as the next line of the same form. A card carries
   its own edge, and a card edge plus a hairline at the same place is two rules
   drawn a pixel apart.
   ===================================================================== */

.errand__row {
  background: var(--card);
  box-shadow: var(--shadow-card);
  outline: 1px solid rgba(184, 137, 60, 0.42);
  outline-offset: -1px;
  border-top: 0;
  border-bottom: 0;
}

/* The head of the stamp sheet is the home page's other run of text sitting
   straight on the paper, and the addendum says "any other text that sits
   straight on the ruled paper" gets the same card. The six stamps under it
   already have card grounds of their own; their head did not. */
.sheet__head {
  background: var(--card);
  box-shadow: var(--shadow-card);
  outline: 1px solid rgba(184, 137, 60, 0.42);
  outline-offset: -1px;
  padding: 20px 24px;
}

@media (max-width: 900px) {
  .sheet__head { padding: 16px 20px; }
}

/* Print: a card's shadow renders as a grey smear, exactly as round 4 found for
   the postal objects, and neither of these may be torn across two sheets. */
@media print {
  .errand__row, .sheet__head { box-shadow: none; }
  .sheet__head { break-inside: avoid; }
}

/* Separate preview only. No source layout, type, content or navigation changes.
   A fixed, single image has no tiled boundaries or mirrored copies.
   Cover maintains the photograph-derived texture's aspect ratio. */
html { background: #e5dac8; }
body { background: transparent; isolation: isolate; }
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-color: #e5dac8;
  background-image: linear-gradient(rgba(249,243,229,.28), rgba(249,243,229,.28)), url("https://static.wixstatic.com/media/37bf5c_fdcca154da26466282e6113ceb53866c~mv2.webp");
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}
/* Ink printed directly on the ground gets its own cream surface.
   Existing card surfaces remain opaque. These rules do not alter dimensions. */
.headline, .flourish, .telegram { background-color: rgba(249,243,229,.88); }
.franked { background-color: rgba(249,243,229,.94); }
@media print {
  body::before { display: none; }
  body { background: #f4efe5; }
}

/* The original hero contains cream raster mattes. A light continuous surface
   quietens the wall here and keeps those existing images visually cohesive. */
.stage--a { background-color: rgba(249,243,229,.40); }

/* Postal refinement, David's review: fixed wall, separate postal objects. */
.postal-label { font: 700 14px/1.4 var(--roman); letter-spacing: .32em; text-transform: uppercase; color: var(--navy); text-align: center; }
.postal-hero.stage--a { background: none; aspect-ratio: auto; display: grid; grid-template-columns: 1.45fr 1fr; gap: 48px 36px; align-items: center; padding: 64px 48px 16px; overflow: visible; }
.hero-stamp-wrap { position: relative; filter: var(--shadow-stamp); transform: rotate(-2deg); }
.hero-stamp { background: var(--card); padding: 22px 22px 12px; }
.hero-stamp img { width: 100%; height: auto; aspect-ratio: auto; object-fit: contain; border: 3px double var(--navy); }
.hero-stamp figcaption { display: flex; justify-content: space-between; padding: 16px 10px 14px; font: 20px/1.4 var(--type); color: var(--navy); }
.hero-cancel { position: absolute; width: 26%; right: -5%; top: -5%; z-index: 2; }
.hero-postcard { padding: 22px 22px 18px; background: var(--card); border: 4px double var(--gold); outline: 1px solid var(--navy); outline-offset: 5px; box-shadow: var(--shadow-card); transform: rotate(1deg); }
.hero-postcard .postal-label { border-bottom: 1px solid var(--rule-gold); padding-bottom: 12px; margin-bottom: 14px; }
.postal-hero .headline { position: static; width: 100%; height: auto; margin: 0; background: none; }
.postal-hero .headline img { width: 100%; }
.postcard-flourish { width: 38%; margin: 12px auto 0; }
.postal-hero .telegram { position: relative; inset: auto; width: 100%; height: auto; margin: 0; grid-column: 1 / -1; }
.telegram-paper { background: var(--card); border: 4px double var(--gold); outline: 1px solid var(--navy); outline-offset: 4px; padding: 18px 24px 22px; box-shadow: var(--shadow-card); }
.telegram-paper .postal-label { display: flex; align-items: center; gap: 24px; margin-bottom: 18px; }
.telegram-paper .postal-label::before, .telegram-paper .postal-label::after { content: ''; height: 4px; border-block: 1px solid var(--gold); flex: 1; }
.telegram-facts { display: grid; grid-template-columns: 1fr 1fr 1.3fr; }
.telegram-facts p { text-align: center; padding: 2px 16px; font: 15px/1.6 var(--type); }
.telegram-facts p+p { border-left: 1px solid var(--rule-gold); }
/* Postcards carry a fine outer navy line and inset double gold rule. */
.card, .sheet__head, .errand__row { outline: 1px solid var(--navy); outline-offset: 0; box-shadow: inset 0 0 0 7px var(--card), inset 0 0 0 8px var(--gold), inset 0 0 0 11px var(--card), inset 0 0 0 12px var(--rule-gold), var(--shadow-card); }
.postcard-kicker { margin-bottom: 26px; padding-bottom: 12px; border-bottom: 3px double var(--rule-gold); width: 100%; }
.bread-postcard-label { margin: 0 0 24px; padding-bottom: 16px; border-bottom: 3px double var(--gold); }
.photo-stamp { background: var(--card); padding: 18px; align-self: center; aspect-ratio: 4 / 3; }
.photo-stamp img { min-height: 0; height: 100%; border: 3px double var(--navy); object-fit: cover; }
.panel__pic.photo-stamp, .room__pic.photo-stamp, .menucard__front.photo-stamp { margin: 26px 12px 26px 26px; }
.panel--flip .panel__pic.photo-stamp, .menucard--flip .menucard__front.photo-stamp { margin: 26px 26px 26px 12px; }
.bread__slot { border: 3px double var(--navy); border-radius: 0; }
.stage--b { overflow: visible; }
.interior-postcard { background: var(--card); padding: 16px 16px 12px; border: 1px solid var(--navy); box-shadow: var(--shadow-card); height: auto; transform: rotate(-1deg); }
.interior-postcard img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border: 1px solid var(--gold); }
.interior-postcard figcaption { padding: 18px 0 8px; font-size: 12px; }
.postcard { height: auto; box-shadow: var(--shadow-card); border: 1px solid var(--navy); transform: rotate(1deg); }
.postcard img { height: auto; }
.stamp6 { padding: 14px 14px 6px; }
.stamp6 img { border: 3px double var(--navy); }
.stamp6 figcaption { color: var(--navy); font-size: 12px; letter-spacing: .08em; }
.review-telegram { display: block; max-width: 1000px; margin: 0 auto; padding: 24px 32px; border: 5px double var(--navy); outline: 1px solid var(--gold); outline-offset: 5px; background: var(--card); box-shadow: var(--shadow-card); }
.review-telegram__head, .review-telegram__foot { display: flex; justify-content: space-between; gap: 20px; font: 12px/1.6 var(--type); letter-spacing: .12em; text-transform: uppercase; }
.review-telegram__head { padding-bottom: 16px; border-bottom: 3px double var(--gold); }
.review-telegram__title { font: 400 36px/1.2 var(--roman); color: var(--navy); text-align: center; margin: 28px 0; }
.review-telegram__body { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 32px; }
.review-route { font: 16px/2.2 var(--type); }
.review-route span { display: inline-block; width: 56px; color: var(--brown); font-size: 12px; letter-spacing: .12em; }
.review-rating { border: 4px double var(--red); padding: 10px 22px; color: var(--red); transform: rotate(-3deg); text-align: center; font: 14px/1.6 var(--type); }
.review-rating__score { display: block; font: 700 44px/1.2 var(--roman); }
.review-rating__score small { font-size: 24px; }
.review-telegram__foot { margin-top: 28px; padding-top: 16px; border-top: 1px solid var(--gold); font-size: 10px; letter-spacing: .06em; }
@media (max-width:900px) {
 .postal-hero.stage--a { display: flex; padding: 40px 24px 16px; gap: 36px; }
 .hero-stamp-wrap { width: 100%; }
 .hero-stamp { padding: 14px 14px 8px; }
 .hero-stamp figcaption { font-size: 13px; padding: 12px 4px; }
 .hero-postcard { width: min(88%,440px); padding: 16px; }
 .postal-label { font-size: 12px; }
 .postal-hero .telegram { width: 100%; }
 .telegram-paper { padding: 16px; }
 .telegram-facts { grid-template-columns: 1fr; }
 .telegram-facts p { font-size: 13px; padding: 12px 0; }
 .telegram-facts p+p { border-left: 0; border-top: 1px solid var(--rule-gold); }
 .stage--b { padding: 12px 24px 24px; gap: 32px; }
 .grp--print.interior-postcard { width: 100%; aspect-ratio: auto; }
 .postcard { width: 100%; }
 .panel__pic.photo-stamp, .panel--flip .panel__pic.photo-stamp, .room__pic.photo-stamp, .menucard__front.photo-stamp, .menucard--flip .menucard__front.photo-stamp { margin: 22px 22px 0; padding: 12px; }
 .postcard-kicker { margin: 8px 0 24px; }
 .review-telegram { padding: 20px; }
 .review-telegram__head, .review-telegram__foot { flex-direction: column; gap: 6px; text-align: center; }
 .review-telegram__title { font-size: 28px; margin: 24px 0; }
 .review-telegram__body { grid-template-columns: 1fr; gap: 24px; }
 .review-route { font-size: 13px; }
 .review-route span { width: 42px; }
 .review-rating { justify-self: center; }
}

/* Fine perforations: scaled for full-size stamps, rather than stretching the six-tooth thumbnail mask. */
.hero-stamp, .photo-stamp, .interior-postcard, .stamp6 { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%201200%201000%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22white%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H1200V1000H0Z%20M8%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M8%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%22/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%201200%201000%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22white%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H1200V1000H0Z%20M8%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M8%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%22/%3E%3C/svg%3E"); }
.hero-stamp figcaption { padding-inline: 16px; }
/* Navy perforations distinguish the photograph stamp from its cream postcard. */
.photo-stamp { background: var(--navy); padding: 10px; }
.photo-stamp img { border: 6px solid var(--card); }
.stamp6 { background: var(--navy); }
.stamp6 img { border: 3px solid var(--card); }
.stamp6 figcaption { color: var(--card); }
.postal-hero .headline img { clip-path: inset(3% 0 0); }
@media (max-width:900px) {
 .panel__pic.photo-stamp, .panel--flip .panel__pic.photo-stamp, .room__pic.photo-stamp, .menucard__front.photo-stamp, .menucard--flip .menucard__front.photo-stamp { padding: 8px; }
}

/* David approved the hero stamp: use its cream paper and fine navy rule throughout. */
.photo-stamp, .interior-postcard, .stamp6 { background: var(--card); border: 0; outline: 0; }
.photo-stamp { aspect-ratio: auto; padding: 22px 22px 12px; transform: rotate(-1deg); }
.photo-stamp img { width: 100%; height: auto; aspect-ratio: 1.29; object-fit: cover; border: 3px double var(--navy); }
.stamp-caption, .interior-postcard figcaption { color: var(--navy); font: 14px/1.4 var(--type); text-transform: none; letter-spacing: .03em; padding: 16px 6px 14px; text-align: left; }
.interior-postcard { padding: 22px 22px 12px; box-shadow: none; }
.interior-postcard img { aspect-ratio: 1.29; border: 3px double var(--navy); }
.stamp6 { padding: 12px 12px 6px; }
.stamp6 img { border: 3px double var(--navy); }
.stamp6 figcaption { color: var(--navy); text-transform: none; letter-spacing: .03em; }
/* The supplied mailer image contains a sliver of a second card on its left.
   Clip to the real postcard edge, including the overlay link in the same box.
   Image pixels and Enquire coordinates are unchanged. */
.postcard { border: 0; box-shadow: none; clip-path: inset(5.2% 2.2% 1.3% 6.5%); }
@media(max-width:900px) {
 .panel__pic.photo-stamp, .panel--flip .panel__pic.photo-stamp, .room__pic.photo-stamp, .menucard__front.photo-stamp, .menucard--flip .menucard__front.photo-stamp { padding: 14px 14px 8px; }
 .interior-postcard { padding: 14px 14px 8px; }
 .stamp-caption, .interior-postcard figcaption { font-size: 12px; padding: 12px 4px; }
}

/* The wrapper casts the same contact shadow as the hero, outside the mask,
   so cream perforations remain legible on cream postcards. */
.stamp-shadow { overflow: visible; align-self: center; filter: var(--shadow-stamp); }
.panel__pic.stamp-shadow, .room__pic.stamp-shadow, .menucard__front.stamp-shadow { margin: 26px 12px 26px 26px; }
.panel--flip .panel__pic.stamp-shadow, .menucard--flip .menucard__front.stamp-shadow { margin: 26px 26px 26px 12px; }
.stamp-shadow .photo-stamp { margin: 0; }
@media(max-width:900px) {
 .panel__pic.stamp-shadow, .panel--flip .panel__pic.stamp-shadow, .room__pic.stamp-shadow, .menucard__front.stamp-shadow, .menucard--flip .menucard__front.stamp-shadow { margin: 22px 22px 0; aspect-ratio: auto; }
 .stamp-shadow .photo-stamp { padding: 14px 14px 8px; }
}

/* Review: one outlined postcard, larger crest and clear menu headings. */
.postcard { clip-path: none; border: 4px double var(--gold); outline: 1px solid var(--navy); outline-offset: 4px; background: var(--card); box-shadow: var(--shadow-card); }
.mailer-art { position: relative; width: 100%; aspect-ratio: 1358.544 / 1038.785; overflow: hidden; }
.postcard .mailer-art img { position: absolute; max-width: none; width: 109.529%; height: auto; left: -7.119%; top: -5.561%; }
.postcard__enquire { left: 4.973%; top: 79.807%; width: 31.654%; height: 13.251%; }
.bread__crest { width: 160px; height: 160px; }
.course__name { font-size: 28px; line-height: 1.45; font-weight: 700; letter-spacing: .08em; }
.menucard .menu-title { display: block; font: 700 46px/1.1 var(--roman); text-transform: none; letter-spacing: 0; color: #8b6224; }
@media(max-width:900px) {
 .bread__crest { width: 144px; height: 144px; }
 .menucard .menu-title { font-size: 40px; }
 .course__name { font-size: 28px; }
}

/* Opaque paper extends through the space between the gold rule and blue outline. */
.postcard, .hero-postcard {
  box-shadow: 0 0 0 5px var(--card), var(--shadow-card);
}
.telegram-paper {
  box-shadow: 0 0 0 5px var(--card), var(--shadow-card);
}
.review-telegram {
  box-shadow: 0 0 0 6px var(--card), var(--shadow-card);
}

/* Give the pre-order notice the same size as the daily availability line. */
.bread__preorder { font-size:17px; font-weight:700; }

/* Date cancellation marks use the exact Google rating red; preserve original ink shape. */
.postmark-ink {
 display:block;
 aspect-ratio:394 / 348;
 height:auto;
 background-color:var(--red);
 -webkit-mask:url("https://static.wixstatic.com/media/37bf5c_78d8ba82672e42e3b9e9b449763393ea~mv2.webp") center / contain no-repeat;
 mask:url("https://static.wixstatic.com/media/37bf5c_78d8ba82672e42e3b9e9b449763393ea~mv2.webp") center / contain no-repeat;
 opacity:1;
}

/* Persistent navigation: original height at the top, compact only while scrolled. */
@media screen {
 .head { position:sticky; top:0; z-index:100; }
 .head.is-compact { --head-h:68px; }
 html { scroll-padding-top:90px; }
 /* On a computer the header stays full size (136 px), so anchors clear it plus the 22 px margin. */
 @media(min-width:901px) { html { scroll-padding-top:158px; } }
 .head__links { max-height:calc(100dvh - 74px); overflow-y:auto; }
 @media(min-width:1600px) {
  .head__links { gap:16px; margin-right:24px; }
  .head__links a { font-size:17px; }
  .head__links a.head__cta { padding:10px 16px; }
  .head.is-compact .head__inner { padding:0 24px; gap:24px; }
  .head.is-compact .head__brand { display:flex; align-items:center; gap:12px; flex:none; }
  .head.is-compact .head__home { position:static; width:56px; height:56px; }
  .head.is-compact .head__word { position:static; width:190px; height:auto; object-fit:contain; }
  .head.is-compact .head__links { margin-right:0; }
 }
 @media(min-width:1600px) and (max-width:1439px) {
  .head:not(.is-compact) .head__word { width:300px; height:103px; top:12px; left:145px; }
 }
 @media(max-width:1599px) {
  .head.is-compact { --head-h:60px; }
  .js .head__burger { padding:10px 14px; }
 }
}

/* Readability refinement: larger gold titles, quieter course labels and larger dishes. */
#bread-h .gilt-line { height:160px; }
.gilt-h.panel__title .gilt-line { height:72px; }
.menucard__head .gilt-line { height:70px; }
.course__name { font-size:24px; }
.dish { font-size:18px; line-height:1.7; }
.dish > span { min-width:0; }
.dish > b { flex-shrink:0; }
.review-telegram__intro { display:grid; grid-template-columns:minmax(0,1fr) 200px; gap:32px; align-items:start; padding-top:24px; }
.review-telegram__title { text-align:left; margin:12px 0 24px; }
.review-rating { position:relative; display:flex; flex-direction:column; gap:8px; align-items:center; justify-content:center; min-height:210px; padding:26px 20px; border:0; background:var(--red); color:var(--card); text-decoration:none; transform:rotate(4deg); -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%201200%201000%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22white%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H1200V1000H0Z%20M8%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M8%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%22/%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%201200%201000%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22white%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H1200V1000H0Z%20M8%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%200a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M8%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M44%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M80%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M116%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M152%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M188%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M224%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M260%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M296%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M332%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M368%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M404%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M440%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M476%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M512%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M548%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M584%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M620%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M656%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M692%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M728%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M764%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M800%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M836%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M872%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M908%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M944%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M980%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1016%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1052%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1088%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1124%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1160%201000a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M-10%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2018a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2054a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%2090a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20126a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20162a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20198a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20234a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20270a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20306a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20342a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20378a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20414a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20450a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20486a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20522a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20558a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20594a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20630a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20666a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20702a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20738a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20774a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20810a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20846a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20882a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20918a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20954a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%20M1190%20990a10%2010%200%201%200%2020%200a10%2010%200%201%200%20-20%200Z%22/%3E%3C/svg%3E"); }
.review-rating::before { content:""; position:absolute; inset:12px; border:3px double var(--card); pointer-events:none; }
.review-rating__label { font:700 12px/1.4 var(--type); text-transform:uppercase; letter-spacing:.12em; }
.review-rating__score { font-size:48px; }
.review-rating__stars { font-size:20px; letter-spacing:.1em; }
.review-rating__view { font-size:12px; text-decoration:underline; text-underline-offset:3px; }
.review-rating:focus-visible { outline:0; background:var(--navy); }
@media(max-width:900px) {
 .bread__text > #bread-h.gilt-h .gilt-line { height:120px; }
 .gilt-h.panel__title .gilt-line { height:48px; }
 .menucard__head .gilt-line { height:52px; }
 .course__name { font-size:24px; }
 .dish { font-size:16px; }
 .review-telegram__intro { grid-template-columns:minmax(0,1fr) 140px; gap:14px; }
 .review-telegram__title { font-size:25px; }
 .review-route { font-size:13px; }
 .review-rating { min-height:175px; padding:22px 14px; }
 .review-rating__score { font-size:36px; }
 .review-rating__label { font-size:10px; }
 .review-rating__view { font-size:10px; }
}
@media(max-width:550px) {
 .review-telegram__intro { grid-template-columns:1fr; }
 .review-rating { grid-row:1; justify-self:end; width:150px; }
 .review-telegram__title { margin-top:8px; }
}

/* David's wording correction: retain pastry/cake titles and step menu type down. */
.course__name { font-size:22px; }
.menucard__head .gilt-line { height:64px; }
@media(max-width:900px) {
 .course__name { font-size:22px; }
 .menucard__head .gilt-line { height:48px; }
}

/* Restore the menu card proportions in David's 24 September reference. */
.menucard__head .gilt-line { height:46px; }
.menucard .course__name { font-size:28px; line-height:1.45; }
.menucard .dish { font-size:16px; line-height:32px; }
@media(max-width:900px) {
 .menucard__head .gilt-line { height:32px; }
 .menucard .course__name { font-size:22px; }
 .menucard .dish { font-size:14px; line-height:28px; }
}

/* Original title artwork; the plural s uses the matching existing pastry lettering. */
.menu-original-lettering { --menu-ink-height:46px; display:flex; align-items:flex-start; height:var(--menu-ink-height); }
.menucard__head .menu-original-lettering .gilt-line { height:var(--menu-ink-height); width:auto; max-width:none; }
.menu-original-lettering__s { display:block; width:calc(var(--menu-ink-height) * .3); height:var(--menu-ink-height); margin-left:calc(var(--menu-ink-height) * -.025); background:url('https://static.wixstatic.com/media/37bf5c_96ad8f02becd4580889c3ab3b7115542~mv2.webp') no-repeat; background-size:calc(var(--menu-ink-height) * 4.20) calc(var(--menu-ink-height) * 1.094); background-position:calc(var(--menu-ink-height) * -3.848) calc(var(--menu-ink-height) * -.022); }
@media(max-width:900px) { .menu-original-lettering { --menu-ink-height:32px; } }

/* Keep the entire guest photograph visible inside the existing stamp. */
.room__pic .photo-stamp img.room-guests-photo {width:100%;height:auto;min-height:0;aspect-ratio:4/3;object-fit:contain}

/* Book-club caption and consistent original gold heading scale. */
.room-book-club-caption {padding:16px 6px 8px;text-align:center;font:16px/1.5 var(--type);color:var(--navy)}
#room-h .gilt-line, #cold-h .gilt-line {height:72px;width:auto;max-width:100%;object-fit:contain}
@media(max-width:900px) {
 #room-h .gilt-line, #cold-h .gilt-line {height:48px}
 .room-book-club-caption {font-size:14px;padding:12px 4px 6px}
}

/* Leave room for the membership link in the full navigation. */
@media(min-width:1440px){.head:not(.is-compact) .head__word{left:170px;width:330px;}}

/* Full offers label needs a wider header; smaller screens use the menu. */
@media(min-width:1600px){.head__inner{width:100%;max-width:1800px}.head__links{gap:14px}.head__links a{font-size:16px}}

@media screen{
/* Reference-colour trial: caramel mortar, terracotta and deep brown.
   CSS-only grading of the existing texture; no new or enlarged image detail. */
body::before {
 background-image: linear-gradient(rgba(138,100,70,.26),rgba(138,100,70,.26)), url("https://static.wixstatic.com/media/37bf5c_fdcca154da26466282e6113ceb53866c~mv2.webp");
 background-blend-mode: multiply;
 filter: contrast(2.0) brightness(.64) saturate(.75);
}
}
.menu-postcard { padding:36px 40px 40px; }
.menu-postcard > .menucard__head { margin-bottom:36px; }
.menu-postcard .menu-original-lettering { --menu-ink-height:72px; }
.menu-postcard__courses { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; }
.menu-course { min-width:0; }
.menu-carousel__viewport { margin:0 5px; touch-action:pan-y; }
.menu-carousel__slide[hidden], .menu-carousel__controls[hidden] { display:none !important; }
.menu-carousel .photo-stamp { padding:20px 20px 12px; transform:rotate(-1deg); }
.menu-course:nth-child(2) .photo-stamp { transform:rotate(1deg); }
.menu-carousel .photo-stamp img { width:100%; height:auto; aspect-ratio:4/3; object-fit:contain; display:block; border:3px double var(--navy); background:#f5ebde; }
.menu-carousel .photo-stamp figcaption { padding:16px 4px 10px; font:16px/1.5 var(--type); color:var(--navy); text-align:center; }
.menu-carousel__placeholder { aspect-ratio:4/3; border:3px double var(--navy); background:var(--card); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; color:var(--brown); }
.menu-carousel__placeholder span { font:700 24px/1.3 var(--type); letter-spacing:.12em; }
.menu-carousel__placeholder strong { font:400 22px/1.4 var(--roman); }
.menu-carousel__controls { display:flex; justify-content:center; align-items:center; gap:24px; margin:24px 0; }
.menu-carousel__dots { display:flex; gap:8px; }
.menu-carousel__controls button { min-width:44px; min-height:44px; padding:8px; border:1px solid var(--gold); background:var(--card); color:var(--navy); font:18px/1 var(--type); cursor:pointer; }
.menu-carousel__controls button:hover, .menu-carousel__dot[aria-pressed="true"] { background:var(--navy); color:var(--card); border-color:var(--navy); }
.menu-carousel__controls button:focus-visible { outline:3px solid var(--red); outline-offset:4px; }
.menu-course__copy { border-top:1px solid var(--gold); padding-top:24px; }
.menu-course .course__name { margin:0 0 16px; font:700 22px/1.5 var(--type); letter-spacing:.055em; color:var(--brown); text-transform:uppercase; }
.menu-course .dish { font-size:16px; line-height:2; }
.menu-carousel:not(.is-ready) .menu-carousel__slide + .menu-carousel__slide { margin-top:20px; }
.menu-carousel__status { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media(max-width:900px) {
 .menu-postcard { padding:28px 24px; }
 .menu-postcard .menu-original-lettering { --menu-ink-height:48px; }
 .menu-postcard__courses { grid-template-columns:1fr; gap:44px; }
 .menu-postcard > .menucard__head { margin-bottom:28px; }
 .menu-carousel .photo-stamp { padding:14px 14px 8px; }
 .menu-carousel .photo-stamp figcaption { font-size:14px; min-height:62px; display:flex; align-items:center; justify-content:center; }
 .menu-course .course__name { font-size:20px; text-align:center; }
 .menu-course .dish { font-size:14px; }
 .menu-course__copy .course__link { text-align:center; }
 .menu-carousel__controls { gap:16px; }
}

/* Approved postcard shuffle: three permanent, separately framed stamps. */
.menu-carousel {overflow:hidden}
.menu-carousel.is-ready .menu-carousel__viewport {display:grid;isolation:isolate;padding:36px 18px 28px;perspective:1200px}
.menu-carousel.is-ready .menu-carousel__slide {grid-area:1/1;min-width:0;transform-origin:center;pointer-events:none}
.menu-carousel.is-ready .photo-stamp {transform:none}
.menu-carousel.is-ready .photo-stamp figcaption {min-height:74px;display:flex;align-items:center;justify-content:center}
.menu-carousel__playback {display:flex;justify-content:center;margin:-10px 0 24px}
.menu-carousel__pause {min-height:44px;padding:8px 14px;background:var(--card);border:1px solid var(--gold);color:var(--navy);font:13px/1.4 var(--type);cursor:pointer}
.menu-carousel__pause:hover {background:var(--navy);color:var(--card)}
.menu-carousel__pause:focus-visible {outline:3px solid var(--red);outline-offset:4px}
@media(max-width:500px){
 .menu-carousel.is-ready .menu-carousel__viewport {margin:0;padding:26px 8px 22px}
 .menu-carousel__controls {gap:8px}
 .menu-carousel__dots {gap:4px}
 .menu-carousel.is-ready .photo-stamp figcaption {min-height:68px}
}

/* Two guest photographs share the food carousel's stamp shuffle and timing. */
.room__pic.room-carousel {margin:16px 0 16px 16px;aspect-ratio:auto;align-self:start;min-width:0}
.room-carousel.is-ready .photo-stamp figcaption {min-height:96px}
@media(max-width:640px){.room__pic.room-carousel{margin:16px 16px 0}.room-carousel.is-ready .photo-stamp figcaption{min-height:104px}}

/* Permanent adjoining panels on every screen. */
.specials {padding:0;overflow:hidden}
.specials-head {padding:30px 36px 26px;background:var(--card)}
.specials-head h2 {font:700 clamp(40px,4.5vw,64px)/1.12 var(--roman);color:var(--gold);margin:0}
.specials-head h2 img {display:block;width:auto;max-width:100%;height:96px;object-fit:contain}
.specials-head p {font:700 17px/1.5 var(--roman);letter-spacing:.24em;text-transform:uppercase;color:#A9403A;margin:0 0 16px}
.special-panels {display:flex;flex-direction:row;gap:0;height:660px;border-top:1px solid var(--gold)}
.special-panel {position:relative;flex:1 1 0;min-width:0;overflow:hidden;background:var(--offer-ground);color:var(--offer-ink);transition:flex-grow 400ms cubic-bezier(.77,0,.175,1)}
.special-panel + .special-panel {border-left:1px solid var(--gold)}
.special-panel.is-active {flex-grow:5}
.special-panel--cream {--offer-ground:#FAF6EE;--offer-ink:#1B2A4E}
.special-panel--navy {--offer-ground:#1B2A4E;--offer-ink:#FAF6EE}
.special-panel--brown {--offer-ground:#6B4F3A;--offer-ink:#F9F3E5}
.special-art {position:absolute;inset:18px 12px 195px}
.special-art img.special-poster {display:block;width:100%;height:100%;object-fit:contain}
.special-copy {position:absolute;bottom:24px;left:20px;right:20px}
.special-copy h3 {font:400 25px/1.2 var(--roman);margin:0 0 14px}
.special-trigger {font:inherit;color:inherit;background:none;border:0;padding:0;text-align:left;cursor:pointer;width:100%;min-height:44px}
.special-trigger:focus-visible {outline:2px solid var(--gold);outline-offset:3px}
.special-details {height:108px;opacity:0;visibility:hidden;transition:opacity 200ms ease,visibility 200ms;pointer-events:none}
.special-panel.is-active .special-details {opacity:1;visibility:visible;pointer-events:auto}
.special-details p {font:14px/1.5 var(--type);margin:0 0 12px}
.special-details strong {font:400 32px/1.2 var(--roman)}
.special-details a {display:inline-flex;align-items:center;min-height:44px;color:inherit;font:13px/1.4 var(--type);text-underline-offset:5px;gap:8px}
.special-details a:focus-visible {outline:2px solid var(--gold);outline-offset:3px}
.special-panel.is-active .special-copy {left:30px;right:30px}
.special-panel.is-active .special-copy h3 {font-size:32px}
.special-controls {display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 12px;border-top:1px solid var(--gold);background:var(--card)}
.special-controls button {min-height:44px;min-width:44px;border:1px solid var(--gold);background:var(--card);color:var(--navy);font:18px/1 var(--type);cursor:pointer;padding:10px}
.special-controls .special-pause {font-size:13px;margin-left:8px}
.special-controls button:hover {background:var(--navy);color:var(--card)}
.special-controls button:focus-visible {outline:3px solid var(--red);outline-offset:3px}
.special-count {font:14px/1.4 var(--type);min-width:40px;text-align:center}
.special-status {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(min-width:1024px) and (max-width:1200px){.special-copy h3{font-size:20px}.special-copy{left:16px;right:16px}}
@media(max-width:1023px){
 .specials-head {padding:26px 24px}

 .special-panels {height:550px}
 .special-art {inset:16px 6px 200px}
 .special-copy,.special-panel.is-active .special-copy {left:12px;right:12px;bottom:20px}
 .special-panel.is-active .special-copy h3 {font-size:23px}
 .special-panel:not(.is-active) .special-copy {left:0;right:0;bottom:16px;display:flex;justify-content:center}
 .special-panel:not(.is-active) .special-copy h3 {writing-mode:vertical-rl;transform:rotate(180deg);font-size:16px;margin:0;white-space:nowrap}
 .special-panel:not(.is-active) .special-trigger {min-width:44px;min-height:0;width:auto;padding:8px 10px}
 .special-panel:not(.is-active) .special-details {position:absolute;pointer-events:none}
 .special-details a {font-size:12px}
 .special-details strong {font-size:28px}
 .special-controls {gap:8px}
}
@media(prefers-reduced-motion:reduce){.special-panel,.special-details{transition:none}}

.specials-head h2 img {filter:url(#grab-paper-out)}

@media(max-width:900px){.specials-head h2 img{height:64px}}

@media screen{
/* Find us and the approved homepage simplification, 25 September 2026. */
.story-telegram__heading { grid-column:1/-1; display:flex; align-items:center; gap:24px; margin:0; }
.story-telegram__heading::before, .story-telegram__heading::after { content:""; flex:1; height:5px; border-block:1px solid var(--gold); }
@media(min-width:1180px) { .head__links { gap:20px; } .head__links a { font-size:17px; } }
.visit { padding-top:56px; }
.visit__hero { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:56px; }
.visit__card { padding:36px; }
.visit__eyebrow { color:var(--brown); font:14px/1.5 var(--type); letter-spacing:.12em; text-transform:uppercase; }
.visit h1 { margin:20px 0 16px; font:400 clamp(48px,6vw,80px)/1 var(--roman); color:#84602c; text-shadow:0 1px #fff6d5; }
.visit__address { font:400 24px/1.4 var(--roman); font-style:normal; margin-bottom:20px; }
.visit__hours { font:15px/1.7 var(--type); padding-block:16px; border-block:1px solid var(--rule-gold); }
.visit__directions { display:flex; flex-wrap:wrap; gap:10px; margin-top:20px; }
.visit__button { display:inline-flex; justify-content:center; align-items:center; min-height:48px; padding:12px 17px; border:1px solid var(--navy); background:var(--card); color:var(--navy); text-decoration:none; font:18px/1.3 var(--roman); cursor:pointer; }
.visit__button--primary { background:var(--navy); color:var(--on-navy); border:3px double var(--gold); }
.visit__button:hover { background:#e9dcc3; }
.visit__button--primary:hover { background:var(--navy-deep); }
.visit__photo { filter:var(--shadow-stamp); transform:rotate(-2deg); }
.visit__photo figure { margin:0; }
.visit__photo img { aspect-ratio:4/3; object-fit:contain; }
.visit__photo figcaption { padding:16px 4px 10px; font:14px/1.4 var(--type); display:flex; justify-content:space-between; }
.visit__section { margin-top:64px; padding:36px; }
.visit__section h2 { font:400 36px/1.2 var(--roman); margin:0 0 12px; }
.visit__section p { font:16px/1.7 var(--type); }
.visit__map-head { display:flex; justify-content:space-between; align-items:end; gap:24px; margin-bottom:24px; }
.visit__map-actions { display:flex; flex-wrap:wrap; gap:8px; }
.visit__map { height:480px; width:100%; border:3px double var(--navy); z-index:0; background:#e6e0cf; }
.visit__map:focus-visible { outline-offset:4px; }
.visit__map .leaflet-control-attribution { font:11px/1.5 Arial,sans-serif; color:#444; background:#fffdf5; padding:2px 5px; }
.visit__map .leaflet-control-attribution a { color:#444; font:inherit; padding:0; min-height:0; text-decoration:underline; }
.visit__map .leaflet-control-zoom a { width:44px; height:44px; line-height:44px; }
.visit__map .leaflet-tooltip { font:14px/1.3 var(--roman); border:1px solid var(--gold); background:var(--card); color:var(--navy); }
.visit__map .visit__pin { display:flex; box-sizing:border-box; text-align:center; padding:0; align-items:center; justify-content:center; border:3px double var(--card); border-radius:50%; background:var(--red); color:white; box-shadow:0 2px 5px #0005; font:bold 18px/1 var(--roman); }
.visit__map .visit__pin > span { display:block; line-height:1; margin:0; padding:0; }
.visit__map .visit__pin--station { background:var(--navy); }
.visit__map-note { margin-top:14px; }
.visit__map-status { color:var(--brown); margin-top:10px; }
.visit__train { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px; }
.visit__train-copy p+p { margin-top:14px; }
.visit__train-links { display:flex; flex-direction:column; align-items:start; gap:16px; margin-top:24px; }
.visit__planner { border-left:1px solid var(--rule-gold); padding-left:36px; }
.visit__planner label { display:block; font:20px/1.4 var(--roman); margin-bottom:10px; }
.visit__planner input { width:100%; min-width:0; padding:14px; min-height:48px; border:1px solid var(--navy); background:#fffcf5; color:var(--navy); font:16px/1.4 var(--type); border-radius:0; }
.visit__planner .visit__button { margin-top:16px; width:100%; }
.visit__planner small { display:block; margin-top:14px; font:14px/1.6 var(--type); }
.visit [hidden] { display:none; }
@media(max-width:900px) {
 .visit { padding-top:32px; }
 .visit__hero { grid-template-columns:1fr; gap:32px; }
 .visit__card { padding:28px; }
 .visit__photo { width:min(100%,560px); justify-self:center; }
 .visit__section { padding:28px; margin-top:40px; }
 .visit__map-head { flex-direction:column; align-items:start; }
 .visit__map { height:400px; }
 .visit__train { grid-template-columns:1fr; gap:28px; }
 .visit__planner { border-left:0; border-top:1px solid var(--rule-gold); padding:24px 0 0; }
 .visit__section h2 { font-size:30px; }
 .visit__section p { font-size:14px; }
}
@media(max-width:420px) {
 .visit__card, .visit__section { padding:24px; }
 .visit__directions { display:grid; grid-template-columns:1fr; }
 .visit__address { font-size:22px; }
 .visit__map-actions { width:100%; }
 .visit__map-actions .visit__button { flex:1; padding:10px; font-size:16px; }
}
}
/* One cabinet card, original heading artwork and shared two-stamp carousel. */
.cabinet-card { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; padding:24px; gap:24px; }
.cabinet-card__copy { padding:24px; }
.cabinet-card__title { display:flex; flex-direction:column; align-items:center; gap:16px; }
.cabinet-card__title .gilt-line { width:auto; max-width:100%; height:64px; object-fit:contain; }
.cabinet-card__title .gilt-line + .gilt-line { height:56px; }
.cabinet-card .panel__body { text-align:center; }
.cabinet-carousel { min-width:0; }
.cabinet-carousel .menu-carousel__controls { margin:8px 0 16px; }
.cabinet-carousel .menu-carousel__playback { margin:0 0 12px; }
.cabinet-carousel.is-ready .photo-stamp figcaption { min-height:58px; }
@media(max-width:900px) {
 .cabinet-card { grid-template-columns:1fr; padding:24px 16px 16px; gap:0; }
 .cabinet-card__copy { padding:8px 8px 0; }
 .cabinet-card__title { gap:10px; }
 .cabinet-card__title .gilt-line { height:44px; }
 .cabinet-card__title .gilt-line + .gilt-line { height:36px; }
 .cabinet-card .panel__body { margin-top:18px; font-size:14px; line-height:1.7; }
 .cabinet-carousel.is-ready .menu-carousel__viewport { padding-top:24px; padding-bottom:18px; }
 .cabinet-carousel.is-ready .photo-stamp figcaption { min-height:52px; }
}

/* Compact homepage previews; full details live on offers.html. */
.offers-telegram{padding:0;overflow:hidden}
.offers-telegram__head{display:flex;justify-content:center;text-align:center;gap:16px;padding:15px 26px;border-bottom:3px double var(--gold);font:12px/1.4 var(--type);letter-spacing:.12em;text-transform:uppercase;color:var(--brown)}
.offers-telegram__intro{text-align:center;padding:24px 20px 18px}
.offers-telegram__intro h2{font:700 clamp(20px,2.4vw,30px)/1.25 var(--roman);color:var(--red);margin:0 0 10px;letter-spacing:.04em}
.offers-telegram__intro p{margin:0;font:16px/1.5 var(--roman)}
.bread-preview{display:block;text-decoration:none;color:var(--navy);padding:18px 26px;border-bottom:3px double var(--gold)}
.bread-preview h3{margin:0 0 18px;text-align:center}
.bread-preview h3 img{display:block;width:min(580px,100%);height:auto;max-height:58px;object-fit:contain;margin:auto}
.offers-brand-lockup.bread__lockup{display:grid;grid-template-columns:minmax(0,.85fr) max-content minmax(0,1.4fr);align-items:center;gap:clamp(8px,2vw,24px);width:100%;max-width:650px;margin:auto;padding:0;border:0}
.offers-brand-lockup .bread__crest{width:100%;max-width:135px;height:auto;aspect-ratio:1;justify-self:center}
.offers-brand-lockup .bread__collab{font-size:clamp(10px,1.4vw,16px);line-height:1.5;letter-spacing:.06em;white-space:nowrap;text-align:center;justify-self:center;padding-inline:4px}
.offers-brand-lockup .bbchip{padding:14px 8px;border-radius:6px;min-width:0}
.offers-brand-lockup .bbchip__name{font-size:clamp(14px,2.5vw,28px);letter-spacing:.04em;margin-top:7px}
.offers-brand-lockup .bbchip__top{font-size:clamp(8px,1vw,12px);letter-spacing:.15em;white-space:nowrap}
.offers-brand-lockup .bbchip__sub{font-size:clamp(11px,1.6vw,19px);letter-spacing:.35em;padding-left:.35em}
.offers-brand-lockup .bbchip__since{font-size:clamp(8px,1vw,12px);letter-spacing:.2em;margin-top:7px}
.preview-link{display:block;text-align:center;margin-top:12px;font:13px/1.5 var(--type);text-decoration:underline;text-underline-offset:4px}
.bread-preview:hover .preview-link,.grab-preview__heading:hover>span{color:var(--red)}
.grab-preview__heading.specials-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 26px;text-decoration:none;color:var(--navy)}
.grab-preview__heading h2 img{height:62px}
.grab-preview__heading>span{font:13px/1.5 var(--type)}
.offer-peeks{display:flex;height:135px;margin:0 18px;border:1px solid var(--gold)}
.offer-peek{position:relative;display:flex;align-items:center;justify-content:center;min-width:48px;flex:1 1 0;overflow:hidden;text-decoration:none;transition:flex-grow 450ms cubic-bezier(.77,0,.175,1);color:var(--ink);background:var(--ground)}
.offer-peek.is-active{flex-grow:5}
.offer-peek+.offer-peek{border-left:1px solid var(--gold)}
.offer-peek--cream{--ground:#FAF6EE;--ink:#1B2A4E}.offer-peek--navy{--ground:#1B2A4E;--ink:#FAF6EE}.offer-peek--brown{--ground:#6B4F3A;--ink:#FAF6EE}
.offer-peek__number{position:absolute;left:14px;top:12px;font:22px/1 var(--type);z-index:1}
.offer-peek__arrow{position:absolute;right:14px;bottom:12px;font-size:20px;opacity:0}
.offer-peek.is-active .offer-peek__arrow{opacity:1}
.offer-seal{display:flex;align-items:center;width:230px;flex-shrink:0;color:var(--gold);opacity:0;transition:opacity 180ms ease}
.offer-peek.is-active .offer-seal{opacity:1}
.offer-seal svg{width:145px;height:50px;fill:none;stroke:currentColor;stroke-width:2}
.offer-seal>span{width:74px;height:74px;flex-shrink:0;border:4px double var(--gold);border-radius:50%;padding:6px;background:#f8f1e4}
.offer-seal img{width:100%;height:100%;object-fit:contain}
.offer-peeks__footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 20px;font:12px/1.5 var(--type)}
.offer-peeks__footer button{font:12px/1.4 var(--type);color:var(--navy);background:transparent;border:0;text-decoration:underline;text-underline-offset:3px;min-height:44px;min-width:44px;cursor:pointer}
.offer-peeks__footer button[hidden]{display:none}
.offers-telegram__foot{text-align:center;padding:8px 20px 24px}
.offers-button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:48px;padding:12px 26px;background:var(--navy);color:var(--card);border:1px solid var(--gold);font:16px/1.4 var(--type);text-decoration:none}
.offers-button:hover{background:var(--red)}
.offers-preview a:focus-visible,.offers-preview button:focus-visible{outline:3px solid var(--red);outline-offset:-4px}
.page-offers [id]{scroll-margin-top:0}
.offers-page-intro .card{padding:30px;text-align:center}
.offers-page-intro h1{font:400 clamp(30px,4vw,54px)/1.2 var(--roman);color:var(--gold);margin:12px 0}
.offers-page-intro nav{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 24px}
.offers-page-intro nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--navy);text-underline-offset:5px;font:14px/1.5 var(--type)}
.page-offers .bread__body{display:block;margin-top:28px;text-align:center}
.page-offers .bread__text{max-width:760px;margin:auto}
.page-offers .bread__lockup{padding-bottom:24px;border-bottom:1px solid var(--gold)}
.offer-detail-number{font-family:var(--type);color:var(--gold)}
@media(max-width:600px){
 .offers-telegram__head{padding:12px 14px;font-size:10px;letter-spacing:.06em}.offers-telegram__head span:last-child{max-width:none;text-align:center}
 .offers-telegram__intro{padding:20px 14px 10px}.offers-telegram__intro p{font-size:15px}
 .bread-preview{padding:12px 14px 18px}.bread-preview h3{margin-bottom:10px}
 .offers-brand-lockup .bbchip{padding:10px 5px}.offers-brand-lockup .bbchip__top{letter-spacing:.08em}
 .grab-preview__heading.specials-head{padding:16px 14px}.grab-preview__heading h2 img{height:44px}.grab-preview__heading>span{font-size:11px;max-width:85px;text-align:right}
 .offer-peeks{height:116px}.offer-seal{width:150px}.offer-seal svg{width:88px}.offer-seal>span{width:58px;height:58px;padding:4px}
 .offer-peek__number{font-size:18px;left:10px;top:10px}.offer-peek__arrow{right:10px;bottom:7px}
 .offer-peeks__footer{padding:3px 14px;font-size:10px}.offers-telegram__foot{padding-bottom:18px}
 .page-offers .bread{padding:24px 14px}.offers-page-intro .card{padding:24px 16px}
}
@media(prefers-reduced-motion:reduce){.offer-peek,.offer-seal{transition:none}}

/* Short offer names; preserve the established panel and seal dimensions. */
.offers-preview{--preview-heading-height:min(58px,calc((100vw - 68px) / 6.0034))}
.bread-preview h3 img{height:var(--preview-heading-height);max-height:none}
.grab-preview__heading.specials-head{justify-content:center;gap:clamp(12px,2vw,24px);background:transparent}
.grab-preview__heading h2{line-height:1;margin:0;flex-shrink:0}
.grab-heading-slender{display:block;height:calc(var(--preview-heading-height) * .9);width:auto;aspect-ratio:1545/410;overflow:hidden}
.grab-preview__heading>.grab-preview__price{font:700 clamp(20px,2.5vw,29px)/1.2 var(--type);color:var(--navy);white-space:nowrap;max-width:none}
.grab-preview__price>span{font-size:15px;font-weight:400;margin-left:6px}
.offer-peek .offer-seal{transform:translateY(19px)}
.offer-peek__name{position:absolute;top:12px;left:45px;right:24px;text-align:center;opacity:0;transition:opacity 180ms ease;white-space:nowrap}
.offer-peek__name>span{display:inline;background:var(--ink);color:var(--ground);padding:2px 6px;font:700 19px/1.3 var(--type);text-transform:uppercase;letter-spacing:.03em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.offer-peek.is-active .offer-peek__name{opacity:1}
@media(max-width:600px){
 .offer-peek .offer-seal{transform:translateY(16px)}
 .offer-peek__name{top:13px;left:29px;right:10px}
 .offer-peek__name>span{font-size:clamp(12px,4vw,17px);padding:2px 4px;letter-spacing:0}
 .grab-preview__heading>.grab-preview__price{font-size:20px}
 .grab-preview__price>span{margin-left:2px;font-size:12px}
}
@media(prefers-reduced-motion:reduce){.offer-peek__name{transition:none}}

/* Availability must be read before the offer titles. */
.offers-telegram__intro .offers-coming-soon,.offers-page-intro .offers-coming-soon{display:table;max-width:100%;margin:12px auto 28px;padding:10px 16px;border:4px double #24221f;font:700 clamp(28px,4vw,46px)/1.15 var(--type);letter-spacing:.05em;color:#24221f;text-transform:uppercase;transform:rotate(-5deg);text-shadow:.35px .2px 0 currentColor;opacity:.92;mask-image:url("../gilt/coming-soon-ink-wear.svg?v=2");mask-mode:luminance;mask-size:100% 100%;mask-repeat:no-repeat}

/* Desktop postal strip: name beside the number, cancellation waves to the seal. */
.offer-seal .offer-waves-wide{display:none}
@media(min-width:901px){
 .offer-peek__name{left:45px;right:140px;text-align:left}
 .offer-peek .offer-seal{position:absolute;left:14px;right:24px;bottom:12px;width:auto;height:100px;gap:12px;transform:none}
 .offer-seal>svg:not(.offer-waves-wide){display:none}
 .offer-seal .offer-waves-wide{display:block;flex:1 1 0;min-width:0;width:0;height:45px;align-self:flex-end;margin-bottom:15px}
 .offer-seal>span{width:100px;height:100px;padding:8px}
 .offer-peek__arrow{right:6px;bottom:6px;font-size:16px}
}

/* Keep the coffee inclusion readable within the existing offer panels. */
.offer-peek__name {white-space:normal;line-height:1.7}
.offer-peek__name small {font:700 19px/1.3 var(--type);white-space:nowrap;text-transform:uppercase;background:var(--ink);color:var(--ground);padding:2px 6px}
@media(max-width:600px){
 .offer-peek__name small {display:block;width:max-content;margin:3px auto 0;padding:1px 4px;background:var(--ink);color:var(--ground);font-size:12px;line-height:1.25}
}
@media(max-width:600px){
 .offer-peek .offer-seal {position:absolute;left:50%;bottom:1px;height:58px;transform:translateX(-50%)}
 .offer-peek__name small {margin-top:1px}
}

@media screen{
/* Shared navigation: familiar icon and quick access to menus, calls and location. */
.head__burger-icon {
  display: grid;
  gap: 5px;
  width: 24px;
}
.head__burger-icon > span {
  display: block;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}
@media (max-width: 1599px) {
  .js .head__burger {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    min-width: 48px;
    padding: 10px;
    border: 3px double var(--gold);
    cursor: pointer;
  }
  .head__burger:focus-visible {
    outline: 2px solid #faf6ee;
    outline-offset: 3px;
  }
}
@media (max-width: 900px) {
  .counter {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    background: #faf6ee;
    border-top: 3px double var(--gold);
  }
  .counter a {
    padding: 12px 8px;
    min-height: 56px;
    color: var(--quick-text);
    background: var(--quick-bg);
    font: 600 14px/1.3 var(--type);
    letter-spacing: .03em;
    text-transform: none;
  }
  .counter__menus { --quick-bg: #1b2a4e; --quick-text: #faf6ee; }
  .counter__call { --quick-bg: #faf6ee; --quick-text: #1b2a4e; }
  .counter__cta { --quick-bg: #6b4f3a; --quick-text: #faf6ee; }
  .counter a + a { border-left: 1px solid var(--gold); }
  .counter a:hover,
  .counter a:focus-visible,
  .counter a:active {
    background: var(--quick-bg);
    color: var(--quick-text);
    filter: brightness(.94);
  }
  .counter a:focus-visible { outline: 2px solid var(--quick-text); outline-offset: -4px; }
  body { padding-bottom: calc(59px + env(safe-area-inset-bottom, 0px)); }
}
}
.bo-section{margin-block:30px 60px;scroll-margin-top:110px}.bread-order{--bo-navy:#1b2a4e;--bo-gold:#b8893c;--bo-cream:#faf6ee;color:var(--bo-navy);background:var(--bo-cream);border:5px double var(--bo-gold);padding:clamp(20px,4vw,56px);text-align:left;font-family:Georgia,serif}.bread-order *{box-sizing:border-box}.bo-heading{text-align:center;margin-bottom:24px}.bread-order .bo-kicker{font:700 12px/1.5 'Courier New',monospace;letter-spacing:.14em;margin:0 0 14px}.bread-order .bo-heading h2{font:400 clamp(30px,4vw,48px)/1.12 Georgia,serif;letter-spacing:-.02em;margin:0 0 16px}.bread-order p{font-size:16px;line-height:1.5}.bo-preview{padding:12px 16px;border:1px dashed #a93f36;color:#91372f;font:14px/1.5 'Courier New',monospace!important;background:#fffaf3}.bo-paper{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding:16px 0 22px;border-bottom:3px double var(--bo-gold);font:14px/1.5 'Courier New',monospace}.bread-order a{color:inherit;text-decoration:underline;text-underline-offset:4px}.bo-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(24px,4vw,56px);margin-top:30px}.bread-order h3{font:400 23px/1.3 Georgia,serif;margin:0 0 20px}.bread-order h3>span{display:block;color:#836029;font:700 12px 'Courier New',monospace;letter-spacing:.15em;margin-bottom:8px}.bo-products{padding:0;border:0;margin:0 0 30px;min-width:0}.bo-products legend{font:700 13px 'Courier New',monospace;text-transform:uppercase;letter-spacing:.16em;border-bottom:1px solid var(--bo-gold);width:100%;padding:0 0 12px}.bo-product{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid #dfd5c1}.bo-product label{display:block;font:400 17px/1.3 Georgia,serif;cursor:pointer}.bo-each{display:block;font:13px 'Courier New',monospace;color:#6b4f3a;margin-top:6px}.bo-stepper{display:flex;flex-shrink:0;border:1px solid #bfa77e;align-items:center;background:#fffdf8}.bread-order button,.bread-order input,.bread-order select,.bread-order textarea{font-family:inherit}.bo-stepper button{width:36px;height:44px;border:0;background:transparent;color:var(--bo-navy);font:22px Georgia,serif;cursor:pointer}.bread-order .bo-stepper input{width:35px;min-height:44px;padding:0;border:0;background:transparent;text-align:center;font:16px 'Courier New',monospace;color:var(--bo-navy);appearance:textfield}.bo-stepper input::-webkit-inner-spin-button,.bo-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bo-stepper button:disabled{opacity:.35;cursor:default}.bo-details>label{display:block;margin-bottom:17px;font:700 13px/1.5 'Courier New',monospace}.bo-details small{font-weight:400}.bo-details input,.bo-details select,.bo-details textarea{display:block;width:100%;min-width:0;border:1px solid #bfa77e;border-radius:0;background:#fffdf8;min-height:46px;color:var(--bo-navy);font-size:16px;padding:10px;margin-top:6px}.bread-order :focus-visible,.bo-disclosure>summary:focus-visible{outline:3px solid #a93f36;outline-offset:3px}.bread-order .bo-help{font:13px/1.65 'Courier New',monospace;color:#6b4f3a;margin:14px 0}.bo-summary{margin-top:30px;border:3px double var(--bo-gold);padding:22px}.bo-lines{list-style:none;padding:0;margin:0}.bo-lines li{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;border-bottom:1px solid #dfd5c1;padding:10px 0;font-size:15px;line-height:1.4}.bo-lines li span:last-child{white-space:nowrap;font-family:'Courier New',monospace;font-weight:bold}.bo-total{display:flex;justify-content:space-between;border-top:3px double var(--bo-gold);padding-top:16px;margin-top:20px;font:700 22px 'Courier New',monospace}.bo-total small{font-size:11px;font-weight:400}.bread-order .bo-empty{font-style:italic;color:#6b4f3a}.bo-review,.bo-edit{display:block;width:100%;min-height:48px;border:1px solid var(--bo-navy);background:var(--bo-navy);color:#faf6ee;font:700 15px 'Courier New',monospace!important;padding:12px;cursor:pointer}.bread-order .bo-error{color:#a93f36;font-size:14px}.bo-dialog{width:min(560px,calc(100% - 24px));max-height:85dvh;overflow:auto;padding:30px;border:5px double var(--bo-gold);background:var(--bo-cream);color:var(--bo-navy)}.bo-dialog::backdrop{background:#16223bc4}.bo-dialog h2{font:400 29px/1.2 Georgia,serif;margin:16px 0}.bo-close{float:right;width:44px;height:44px;background:transparent;border:1px solid #bfa77e;font-size:28px;cursor:pointer;color:var(--bo-navy)}.bo-review-content{overflow-wrap:anywhere}.bo-review-content p{font-size:15px}.bo-disclosure>summary{padding:24px;background:#1b2a4e;color:#faf6ee;cursor:pointer;border:4px double #b8893c;font:400 28px Georgia,serif}.bo-disclosure>summary span{display:block;font:13px/1.5 'Courier New',monospace;margin-top:8px}.bo-disclosure[open]>summary{border-bottom:0}.bo-back{display:inline-block;margin-bottom:18px;color:#1b2a4e;background:#faf6ee;padding:10px 14px;font:14px 'Courier New',monospace}.bo-form [hidden]{display:none!important}
@media(max-width:700px){.bo-layout{display:block}.bo-section.wrap{width:calc(100% - 24px)}.bread-order{padding:22px 15px;border-width:3px}.bo-product label{font-size:16px}.bo-heading{margin-top:4px}.bread-order .bo-heading h2{font-size:32px}.bo-paper{display:block}.bo-paper a{display:block;margin-top:8px}.bo-right{border-top:3px double #b8893c;padding-top:26px}.bo-summary{padding:17px}.bo-product{gap:8px}.bo-stepper button{width:34px}.bo-stepper input{width:29px!important}.bo-dialog{padding:20px}.bo-disclosure>summary{padding:18px}.bo-section{margin-bottom:30px}}
@media print{.bread-order{border-color:#999}.bo-preview,.bo-paper,.bo-review,.bo-edit,.bo-close{display:none}}
/* Single-product enhanced photos, full-frame with original product identity. */
.bo-product{display:grid;grid-template-columns:104px minmax(0,1fr) auto;column-gap:16px;row-gap:10px;padding:18px 0}
.bo-photo-frame{display:flex;align-items:center;justify-content:center;width:104px;height:104px;background:#efe3d2;border:1px solid #dfd5c1;padding:0;overflow:hidden}
.bo-photo-crop{display:block;position:relative;overflow:hidden;flex:none}
.bo-product-photo{display:block;position:absolute;max-width:none;height:auto}
.bo-product-info{min-width:0}.bo-product label{overflow-wrap:anywhere;hyphens:auto;line-height:1.35}
.bo-stepper{width:86px;justify-content:center;justify-self:start}
.bo-stepper button{width:28px;flex:0 0 28px;height:40px;font-size:19px}
.bread-order .bo-stepper input{width:28px!important;min-height:40px;font-size:15px}
@media(max-width:1100px){.bo-product{grid-template-columns:104px minmax(0,1fr);column-gap:16px}.bo-photo-frame{grid-column:1;grid-row:1 / 3}.bo-product-info{grid-column:2;align-self:end}.bo-stepper{grid-column:2;align-self:start;margin-top:2px}}
@media(max-width:700px){.bo-product{grid-template-columns:104px minmax(0,1fr);column-gap:16px;row-gap:10px}.bo-product label{font-size:17px}.bo-each{font-size:13px;margin-top:7px}.bo-photo-frame{width:104px;height:104px}}
@media(max-width:360px){.bo-product{grid-template-columns:88px minmax(0,1fr);column-gap:14px}.bo-photo-frame{width:88px;height:88px}.bo-product label{font-size:16px}}
/* Optional coffee in the final review, made on arrival. */
.bo-coffee{margin:22px 0;border:3px double var(--bo-gold);padding:14px;background:#f3ecde}
.bo-coffee summary{cursor:pointer;font:700 17px/1.4 'Courier New',monospace;min-height:44px}
.bo-coffee summary span{display:block;font-size:12px;font-weight:400;margin-top:5px}
.bread-order .bo-coffee-note{font:15px/1.5 Georgia,serif;margin:12px 0 18px}
.bo-coffee-grid{display:grid;grid-template-columns:1fr;gap:6px}
.bo-coffee-grid label{font:700 12px/1.4 'Courier New',monospace;margin-top:8px}
.bo-coffee-grid select,.bo-coffee-grid input{width:100%;min-width:0;min-height:44px;border:1px solid #bfa77e;background:#fffdf8;color:var(--bo-navy);border-radius:0;padding:9px;font-size:16px}
.bo-coffee-grid input{max-width:90px}
.bo-coffee-extras{display:grid;gap:6px;margin:14px 0}
.bo-coffee-extras label{display:flex;align-items:center;gap:8px;min-height:38px;font:13px/1.4 'Courier New',monospace}
.bo-coffee-extras input{width:20px;height:20px;accent-color:#1b2a4e}
.bo-coffee-add{width:100%;min-height:46px;border:1px solid var(--bo-navy);background:var(--bo-navy);color:#faf6ee;padding:10px;font:700 14px/1.4 'Courier New',monospace!important;cursor:pointer}
.bo-coffee-add:disabled{opacity:.5;cursor:default}
.bread-order .bo-coffee-status{font:13px/1.5 'Courier New',monospace;margin:12px 0 0}
.bo-coffee-status:empty{display:none}

/* One-tap removal beside every item, in the basket and final review. */
.bo-lines li{display:grid;grid-template-columns:minmax(0,1fr) auto 106px;gap:10px;align-items:center}
.bo-lines li>span:first-child{min-width:0;overflow-wrap:anywhere}
.bo-lines .bo-line-price{white-space:nowrap;font-family:'Courier New',monospace;font-weight:bold}
.bo-item-remove{display:flex;align-items:center;justify-content:center;width:40px;height:44px;padding:0;border:0;background:transparent;color:#91372f;cursor:pointer;border-radius:3px}
.bo-item-remove:hover{background:#eaded1}.bo-item-remove:active{background:#ddcbb9}
@media(max-width:360px){.bo-lines li{gap:6px;grid-template-columns:minmax(0,1fr) auto}.bo-item-remove{width:36px}}

.bo-item-decrease{font:24px/1 Georgia,serif!important;color:var(--bo-navy)}

.bo-line-controls{display:flex;align-items:center;justify-content:center;border:1px solid #bfa77e;background:#fffdf8;width:106px}
.bo-line-controls .bo-item-remove{width:36px;flex:0 0 36px}
.bo-line-quantity{min-width:32px;text-align:center;font:15px 'Courier New',monospace}
.bo-line-controls button:disabled{opacity:.35;cursor:default}
@media(max-width:600px){.bo-lines li{grid-template-columns:minmax(0,1fr) auto}.bo-line-controls{grid-column:1 / -1;justify-self:start}.bo-lines .bo-line-price{grid-column:2;grid-row:1}}

/* Brief 26. Temporary movement; all resting geometry belongs to the original. */
:root{--postal-ease:cubic-bezier(.22,1,.36,1);--postal-fast:180ms}
.js .reveal,.js .reveal.reveal--card{opacity:1;transform:none;transition:none;will-change:auto}
@media(prefers-reduced-motion:no-preference){
 ::view-transition-group(*){animation:none}
 ::view-transition-old(root),::view-transition-new(root){animation:none}
 ::view-transition-old(postal-paper){animation:postal-out 160ms ease-out both}
 ::view-transition-new(postal-paper){animation:postal-in 180ms var(--postal-ease) both}
 ::view-transition-old(postal-masthead){animation:none}
 ::view-transition-new(postal-masthead){animation:none}
 .stamp-hero .arch-fan__card{transition-property:transform,opacity;transition-duration:600ms,200ms;transition-timing-function:var(--postal-ease)}
 .special-details{transition-property:opacity}
 dialog[open]{animation:postal-dialog 260ms var(--postal-ease)}
 dialog::backdrop{animation:postal-in 180ms ease-out}
}
@keyframes postal-in{from{opacity:.55}to{opacity:1}}
@keyframes postal-out{from{opacity:1}to{opacity:0}}
@keyframes postal-dialog{from{opacity:.75;transform:translateY(8px) rotate(-.35deg) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* Reserve the approved carousel geometry before its external script arrives.
   The class is only set when JS runs; the original no-JS layout is retained. */
.postal-js .menu-carousel:not(.is-ready) .menu-carousel__viewport{display:grid;isolation:isolate;padding:36px 18px 28px;perspective:1200px}
.postal-js .menu-carousel:not(.is-ready) .menu-carousel__slide{grid-area:1/1;min-width:0;transform-origin:center;pointer-events:none;margin-top:0}
.postal-js .menu-carousel:not(.is-ready) .menu-carousel__slide:nth-child(1){transform:translate(5%,5%) rotate(3deg) scale(.92);z-index:3}
.postal-js .menu-carousel:not(.is-ready) .menu-carousel__slide:nth-child(2){transform:translate(-4%,0) rotate(-4deg) scale(.94);z-index:2}
.postal-js .menu-carousel:not(.is-ready) .menu-carousel__slide:nth-child(3){transform:translate(1%,-5%) rotate(1deg) scale(.94);z-index:1}
.postal-js .menu-carousel:not(.is-ready) .photo-stamp{transform:none}
.postal-js .menu-carousel:not(.is-ready) .photo-stamp figcaption{min-height:74px;display:flex;align-items:center;justify-content:center}
.postal-js .menu-carousel:not(.is-ready)::after{content:"";display:block;height:150px}
.postal-js .room-carousel:not(.is-ready) .photo-stamp figcaption{min-height:96px}
@media(max-width:640px){.postal-js .room-carousel:not(.is-ready) .photo-stamp figcaption{min-height:104px}}
@media(max-width:500px){
 .postal-js .menu-carousel:not(.is-ready) .menu-carousel__viewport{margin:0;padding:26px 8px 22px}
 .postal-js .menu-carousel:not(.is-ready):not(.room-carousel) .photo-stamp figcaption{min-height:68px}
}

.postal-js .cabinet-carousel:not(.is-ready)::after{height:124px}
.postal-js .cabinet-carousel:not(.is-ready):not(.room-carousel) .photo-stamp figcaption{min-height:58px}
@media(max-width:900px){
 .postal-js .cabinet-carousel:not(.is-ready) .menu-carousel__viewport{padding-top:24px;padding-bottom:18px}
 .postal-js .cabinet-carousel:not(.is-ready):not(.room-carousel) .photo-stamp figcaption{min-height:52px}
}
@media screen{.postal-js .arch-fan__controls[hidden]{display:flex;visibility:hidden}}

/* Signature motion, version 3. Rest geometry comes from the approved site. */
.arch-fan__stage,.menu-carousel__viewport{touch-action:pan-y;transform-origin:50% 55%}
.stamp-hero .arch-fan__card{transition:none!important}
.v3-gold-reflection{position:fixed;z-index:80;pointer-events:none;object-fit:fill;filter:brightness(1.8) saturate(.65);mix-blend-mode:screen}
.v3-order-mark{position:fixed;z-index:100;display:grid;place-items:center;width:34px;height:34px;background:#f9f2e3;color:#20304e;border:2px dotted #a78042;font:bold 13px monospace;box-shadow:0 5px 16px #20304e33;pointer-events:none}
.dish-photo[open]{animation:none!important;transform-origin:center}
.dish-photo::backdrop{animation:v3-backdrop 400ms ease-out}
@keyframes v3-backdrop{from{background:rgb(20 27 40 / 0)}to{background:rgb(20 27 40 / .76)}}
@media(prefers-reduced-motion:no-preference){
 ::view-transition-old(postal-paper){animation:v3-paper-out 300ms cubic-bezier(.4,0,1,1) both;transform-origin:50% 15%}
 ::view-transition-new(postal-paper){animation:v3-paper-in 580ms cubic-bezier(.16,1,.3,1) both;transform-origin:50% 15%}
 @keyframes v3-paper-out{to{transform:perspective(1400px) translateY(-32px) rotateX(3deg) scale(.97);opacity:0}}
 @keyframes v3-paper-in{from{transform:perspective(1400px) translateY(65px) rotateX(-5deg) scale(.97);opacity:0}to{transform:none;opacity:1}}
}
@media(prefers-reduced-motion:reduce){.v3-gold-reflection,.v3-order-mark{display:none}.arch-fan__stage,.menu-carousel__viewport{transform:none!important;transition:none!important}.dish-photo::backdrop{animation:none}}
@media print{.v3-gold-reflection,.v3-order-mark{display:none!important}}

.language-control{display:flex;align-items:center;gap:4px;margin-left:auto;color:#f9f0d7;font:13px Georgia,serif;flex-shrink:0}
.language-control select{font:inherit;color:inherit;background:#20324d;border:1px solid #b79b61;border-radius:0;min-height:44px;padding:5px;max-width:112px;cursor:pointer}
.language-control select:focus-visible{outline:2px solid #fff;outline-offset:3px}
.translated-heading{display:none;font-family:Georgia,'Noto Serif',serif;color:var(--gold,#95763e);font-size:clamp(28px,4vw,52px);font-weight:400;line-height:1.2;letter-spacing:.015em}
html:not([data-language=en]) [data-language-heading]{display:none!important}
html:not([data-language=en]) .translated-heading{display:block}
html[data-language=ja] .write-word,html[data-language=zh] .write-word{display:inline;white-space:normal}
html[data-language=ja] .postcard-handwriting,html[data-language=zh] .postcard-handwriting{font-family:'Hiragino Mincho ProN','Songti SC','Noto Serif CJK JP',serif!important;font-size:62px}
html:not([data-language=en]) .head__links a{white-space:normal}
html:not([data-language=en]) .chapter-route-labels{font-size:8px;letter-spacing:0}
html:not([data-language=en]) .bo-jump-nav a{white-space:normal}
@media(max-width:900px){.language-control{gap:2px;margin-right:8px}.language-control select{max-width:90px;font-size:12px}.head__brand{gap:8px}.head__word{max-width:calc(100vw - 224px)!important}.head__burger{margin-left:0!important}}
@media(min-width:901px){.language-control{margin-left:20px}}
@media print{.language-control{display:none}}

@media(max-width:760px){html:not([data-language=en]) .menu-jumps{width:calc(100% - 24px)}html:not([data-language=en]) .menu-jumps a{font-size:10px;white-space:normal;overflow-wrap:anywhere;text-align:center;padding:4px 6px;min-width:0}html[data-language=ja] .chapter-copy h1,html[data-language=zh] .chapter-copy h1{font-size:38px}html[data-language=ja] .chapter-copy h2,html[data-language=zh] .chapter-copy h2{font-size:38px}}
html:not([data-language=en]) .postcard__enquire{display:flex;align-items:center;justify-content:center;background:#20364b;box-shadow:inset 0 0 0 2px #9ea89e;z-index:4}
html:not([data-language=en]) .postcard__enquire .vh{position:static!important;width:auto!important;height:auto!important;clip:auto!important;clip-path:none!important;overflow:visible!important;white-space:normal!important;color:#fbf3dd;font:clamp(11px,2vw,20px)/1.15 Georgia,serif;text-align:center;padding:3px}
html:not([data-language=en]) .bread__collab{line-height:1.3}

.pagehead__title .translated-heading{text-align:center;width:100%}
@media(max-width:900px){.head__brand{min-width:0;width:100%}.head__word{flex:1 1 0;max-width:none!important}.language-control{margin-left:auto;margin-right:0}.language-control>span{display:none}.language-control select{width:86px}.head__home{width:44px;height:44px}}
@media(max-width:360px){.head__brand{gap:6px}.language-control select{width:78px}.head__word{height:32px}}

/* Korean uses readable Hangul lettering rather than a Latin handwriting font. */
html[data-language=ko] .postcard-handwriting{font-family:'Apple SD Gothic Neo','Malgun Gothic',sans-serif!important;font-size:60px}
html[data-language=ko] .write-word{display:inline;white-space:normal}
@media(max-width:760px){html[data-language=ko] .chapter-copy h1,html[data-language=ko] .chapter-copy h2{font-size:38px}html:not([data-language=en]) .chapter-menu-tabs button{min-width:0;white-space:normal;overflow-wrap:anywhere}html:not([data-language=en]) .chapter-menu-open{white-space:normal;font-size:12px}}
