/*
Theme Name: The Ticket
Theme URI: https://example.com/the-ticket
Author: Your Name
Author URI: https://example.com
Description: A restaurant review theme styled as a printed order ticket. Every review is laid out like the chit a kitchen fires — restaurant up top, the order below, a scored total at the bottom, and a torn edge to prove it's been through service.
Version: 1.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: the-ticket
*/

/* =========================================================
   DESIGN TOKENS
   Concept: the review-as-ticket. The restaurant "fires" a
   chit, the kitchen (the reviewer) works it, and it comes
   back stamped with a verdict. Paper stock, dot-matrix type
   and a working barcode carry the idea end to end.
   ========================================================= */
:root{
  /* paper + ink */
  --paper: #ECE7DC;          /* thermal duplicate paper */
  --paper-dark: #E2DBCB;     /* shadowed paper / footer */
  --carbon: #E3D3C6;         /* carbon-copy pink undertone, used sparingly */
  --ink: #221F1C;            /* near-black print ink */
  --ink-soft: #55504A;       /* faded ink / secondary text */
  --rule: #C9C0AE;           /* dashed rule colour */

  /* stamps */
  --stamp-red: #9C2E2A;      /* VOID / SKIP IT */
  --stamp-green: #2E5940;    /* APPROVED / high score */
  --stamp-gold: #A9822E;     /* highest rated ribbon */

  /* surface */
  --board: #1E1B18;          /* the "counter" the ticket sits on */
  --board-line: #33302B;

  /* type */
  --font-display: 'Archivo Black', 'Arial Black', sans-serif;
  --font-mono: 'Courier Prime', 'Courier New', monospace;
  --font-ui: 'Work Sans', -apple-system, sans-serif;

  --radius-s: 2px;
  --shadow-ticket: 0 18px 40px -18px rgba(0,0,0,0.55), 0 2px 0 rgba(0,0,0,0.08);
}

*, *::before, *::after{ box-sizing: border-box; }

html{ -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background: var(--board);
  background-image:
    radial-gradient(ellipse at top, rgba(255,255,255,0.03), transparent 60%),
    repeating-linear-gradient(0deg, rgba(255,255,255,0.015) 0px, rgba(255,255,255,0.015) 1px, transparent 1px, transparent 3px);
  color: var(--ink);
  font-family: var(--font-ui);
  line-height: 1.5;
}

a{ color: inherit; }
img{ max-width:100%; display:block; }
h1,h2,h3,h4{ margin:0 0 0.5em; font-family: var(--font-display); letter-spacing:0.01em; }

.screen-reader-text{ position:absolute !important; clip:rect(1px,1px,1px,1px); overflow:hidden; height:1px; width:1px; }

/* =========================================================
   SITE CHROME
   ========================================================= */
.site-header{
  padding: 2.5rem 1.5rem 1.5rem;
  text-align:center;
  color: var(--paper);
}
.site-title{
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  color: var(--paper);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin:0;
}
.site-title a{ text-decoration:none; color:inherit; }
.site-description{
  font-family: var(--font-mono);
  color: #9A958B;
  font-size: 0.85rem;
  letter-spacing: 0.05em;
  margin-top: 0.4rem;
}

.site-nav{
  display:flex;
  justify-content:center;
  gap: 1.75rem;
  padding: 0.75rem 1rem;
  border-top: 1px dashed #47433C;
  border-bottom: 1px dashed #47433C;
  max-width: 720px;
  margin: 1.5rem auto 0;
}
.site-nav a{
  text-decoration:none;
  color: var(--paper);
  font-family: var(--font-ui);
  font-size:1.15rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  opacity:0.75;
}
.site-nav a:hover{ opacity:1; }

.site-footer{
  text-align:center;
  color:#7C776D;
  font-family: var(--font-mono);
  font-size:0.75rem;
  padding: 3rem 1rem 2.5rem;
}
.footer-social{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:1rem;
  margin-bottom:1.25rem;
}
.footer-social a{
  color:#B4AFA4;
  text-decoration:none;
  font-size:1rem;
}
.footer-social a:hover{
  color: var(--paper);
}
.footer-social img,
.footer-social svg{
  width:22px;
  height:22px;
  vertical-align:middle;
}

.wrap{
  max-width: 1080px;
  margin: 0 auto;
  padding: 0 1.25rem 4rem;
}

/* =========================================================
   TABS (Latest Reviews / Highest Rated)
   ========================================================= */
.ticket-tabs{
  max-width: 1080px;
  margin: 0 auto;
}
.ticket-tabs__nav{
  display:flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content:center;
  margin-bottom: 2rem;
}
.ticket-tabs__btn{
  font-family: var(--font-ui);
  font-size: 1.1rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  background: transparent;
  border: 1px solid #47433C;
  color: #B4AFA4;
  padding: 0.65rem 1.4rem;
  cursor: pointer;
  border-radius: 999px;
  transition: all 0.2s ease;
}
.ticket-tabs__btn.is-active{
  background: var(--paper);
  color: var(--ink);
  border-color: var(--paper);
}
.ticket-tabs__panel{ display:none; }
.ticket-tabs__panel.is-active{ display:block; }

/* =========================================================
   REVIEW GRID (cards linking to single receipts)
   ========================================================= */
.review-grid{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.75rem;
}
.review-card{
  background: var(--paper);
  border-radius: var(--radius-s);
  padding: 1.5rem 1.6rem 1.7rem;
  text-decoration:none;
  color: var(--ink);
  position:relative;
  overflow:hidden;
  box-shadow: 0 10px 24px -14px rgba(0,0,0,0.5);
  border-bottom: 3px dashed var(--paper-dark);
  display:flex;
  flex-direction:column;
  gap:0.5rem;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.review-card:hover{
  transform: translateY(-2px);
  box-shadow: 0 16px 30px -14px rgba(0,0,0,0.6);
}
.review-card__photo{
  margin: -1.5rem -1.6rem 0.4rem;
  overflow:hidden;
}
.review-card__photo img{
  width:100%;
  height:auto;
  display:block;
}
.review-card__title-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:0.5rem;
}
.review-card__grade-badge{
  flex:0 0 auto;
  border: 2px solid var(--stamp-green);
  color: var(--stamp-green);
  font-family: var(--font-display);
  font-size:0.8rem;
  line-height:1;
  padding: 0.2rem 0.4rem;
  border-radius: 4px;
  margin-top:0.15rem;
}
.review-card__grade-badge--mid{ border-color: var(--stamp-gold); color: var(--stamp-gold); }
.review-card__grade-badge--low{ border-color: var(--stamp-red); color: var(--stamp-red); }
.review-card__eyebrow{
  font-family: var(--font-mono);
  font-size:0.75rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  color: var(--ink-soft);
}
.review-card__title{
  font-size:1.4rem;
  margin:0;
}
.review-card__cuisine{
  font-family: var(--font-mono);
  font-size:0.85rem;
  color: var(--ink-soft);
}
.review-card__score{
  margin-top:auto;
  padding-top:1rem;
  font-family: var(--font-mono);
  font-size:0.95rem;
  border-top: 1px dashed var(--rule);
  display:flex;
  justify-content:space-between;
}
.review-card__score b{ font-family: var(--font-display); font-size:1.1rem; }
.review-card__type-tag{
  display:inline-block;
  width:fit-content;
  font-family: var(--font-ui);
  font-size:0.62rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color: var(--stamp-green);
  border: 1px solid var(--stamp-green);
  border-radius: 999px;
  padding: 0.15rem 0.6rem;
  margin-top:0.3rem;
}
.restaurant-index__tag{
  display:inline-block;
  font-family: var(--font-ui);
  font-size:0.6rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.06em;
  color: var(--stamp-green);
  border: 1px solid var(--stamp-green);
  border-radius: 999px;
  padding: 0.1rem 0.5rem;
  margin-left:0.5rem;
  vertical-align:middle;
}

/* =========================================================
   RESTAURANT INDEX (All Restaurants tab)
   ========================================================= */
.restaurant-index{
  max-width: 640px;
  margin: 0 auto;
  background: var(--paper);
  border-radius: var(--radius-s);
  overflow:hidden;
}
.restaurant-index__row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  padding: 0.9rem 1.4rem;
  text-decoration:none;
  color: var(--ink);
  border-bottom: 1px dashed var(--rule);
}
.restaurant-index__row:last-child{ border-bottom:none; }
.restaurant-index__row:hover{ background: var(--paper-dark); }
.restaurant-index__name{
  font-family: var(--font-display);
  font-size:1rem;
}
.restaurant-index__meta{
  font-family: var(--font-mono);
  font-size:0.75rem;
  color: var(--ink-soft);
  white-space:nowrap;
}
.restaurant-index__empty{
  text-align:center;
  color:#B4AFA4;
  font-family: var(--font-mono);
  padding: 2rem 0;
}

/* =========================================================
   HOMEPAGE STATS STRIP
   ========================================================= */
.site-stats{
  text-align:center;
  font-family: var(--font-mono);
  font-size:0.85rem;
  color:#B4AFA4;
  letter-spacing:0.03em;
  margin: 0 auto 2.5rem;
  padding: 0 1rem;
}
.site-stats strong{
  color: var(--paper);
  font-family: var(--font-display);
  font-size:1rem;
}
.site-stats__sep{
  margin: 0 0.75rem;
  color:#5A564E;
}

/* =========================================================
   HOMEPAGE FEATURED REVIEW (hero)
   ========================================================= */
.featured-review{
  display:block;
  max-width: 940px;
  margin: 0 auto 3.5rem;
  background: var(--paper);
  border-radius: var(--radius-s);
  overflow:hidden;
  text-decoration:none;
  color: var(--ink);
  box-shadow: 0 20px 40px -20px rgba(0,0,0,0.6);
  display:flex;
  flex-wrap:wrap;
}
.featured-review__photo{
  flex: 1 1 360px;
  min-height:280px;
  background: var(--paper-dark);
  display:flex;
  align-items:center;
  justify-content:center;
}
.featured-review__photo img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  min-height:280px;
}
.featured-review__content{
  flex: 1 1 320px;
  padding: 2rem 2.2rem;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.featured-review__eyebrow{
  font-family: var(--font-mono);
  font-size:0.78rem;
  text-transform:uppercase;
  letter-spacing:0.14em;
  color: var(--ink-soft);
  margin:0 0 0.5rem;
}
.featured-review__title{
  font-size:2rem;
  margin:0 0 0.4rem;
  line-height:1.1;
}
.featured-review__cuisine{
  font-family: var(--font-mono);
  font-size:0.9rem;
  color: var(--ink-soft);
  margin:0 0 1.2rem;
}
.featured-review__score{
  display:flex;
  align-items:center;
  gap:0.85rem;
  font-family: var(--font-display);
  font-size:1.3rem;
  border-top: 1px dashed var(--rule);
  padding-top:1rem;
}
.featured-review__grade{
  border:2px solid var(--stamp-green);
  color: var(--stamp-green);
  border-radius:6px;
  padding:0.15rem 0.55rem;
  font-size:1.1rem;
}
.featured-review__grade--mid{ border-color: var(--stamp-gold); color: var(--stamp-gold); }
.featured-review__grade--low{ border-color: var(--stamp-red); color: var(--stamp-red); }

@media (max-width: 640px){
  .featured-review__photo{ min-height:220px; }
  .featured-review__photo img{ min-height:220px; }
  .featured-review__title{ font-size:1.5rem; }
}

/* =========================================================
   HOMEPAGE MISSION INTRO
   ========================================================= */
.site-mission{
  max-width: 940px;
  margin: 0 auto 3rem;
  text-align:center;
  color:#D8D3C7;
}
.site-mission__eyebrow{
  font-family: var(--font-mono);
  color:#9A958B;
  text-transform:uppercase;
  font-size:1.15rem;
  font-weight:700;
  letter-spacing:0.18em;
  margin-bottom:0.75rem;
}
.site-mission p{
  font-size:1.05rem;
  line-height:1.7;
}

/* =========================================================
   REVIEW LEAD (single review, brief overview above the ticket)
   ========================================================= */
.review-lead{
  max-width: 720px;
  margin: 0 auto 2rem;
  text-align:center;
  color:#D8D3C7;
}
.review-lead__meta{
  font-family: var(--font-mono);
  font-size:0.78rem;
  text-transform:uppercase;
  letter-spacing:0.1em;
  color:#9A958B;
  margin-bottom:0.5rem;
}
.review-lead__text{
  font-size:1rem;
  line-height:1.6;
}

/* =========================================================
   OVERVIEW HEADER (single review, above the ticket)
   ========================================================= */
.review-overview{
  color: var(--paper);
  max-width: 640px;
  margin: 0 auto 3rem;
  text-align:center;
}
.review-overview__eyebrow{
  font-family: var(--font-mono);
  color:#9A958B;
  text-transform:uppercase;
  font-size:0.75rem;
  letter-spacing:0.15em;
  margin-bottom:0.6rem;
}
.review-overview h1{
  font-size: clamp(1.8rem,4vw,2.5rem);
  color: var(--paper);
}
.review-overview__meta{
  font-family: var(--font-mono);
  font-size:0.85rem;
  color:#B4AFA4;
  margin-top:0.5rem;
}
.review-overview__why{
  margin-top:1.2rem;
  font-size:1rem;
  color:#D8D3C7;
  line-height:1.7;
}

/* =========================================================
   THE TICKET (signature element)
   ========================================================= */
.ticket{
  max-width: 420px;
  margin: 0 auto 3rem;
  background: var(--paper);
  font-family: var(--font-mono);
  color: var(--ink);
  position: relative;
  padding: 2.2rem 1.8rem 0;
  box-shadow: var(--shadow-ticket);
  clip-path: polygon(
    0% 1%, 4% 0%, 8% 1%, 12% 0%, 16% 1%, 20% 0%, 24% 1%, 28% 0%, 32% 1%, 36% 0%, 40% 1%, 44% 0%, 48% 1%, 52% 0%, 56% 1%, 60% 0%, 64% 1%, 68% 0%, 72% 1%, 76% 0%, 80% 1%, 84% 0%, 88% 1%, 92% 0%, 96% 1%, 100% 0%,
    100% 97%, 97% 100%, 94% 97%, 91% 100%, 88% 97%, 85% 100%, 82% 97%, 79% 100%, 76% 97%, 73% 100%, 70% 97%, 67% 100%, 64% 97%, 61% 100%, 58% 97%, 55% 100%, 52% 97%, 49% 100%, 46% 97%, 43% 100%, 40% 97%, 37% 100%, 34% 97%, 31% 100%, 28% 97%, 25% 100%, 22% 97%, 19% 100%, 16% 97%, 13% 100%, 10% 97%, 7% 100%, 4% 97%, 1% 100%, 0% 97%
  );
}
.ticket__type-stamp{
  position:absolute;
  top: 16px;
  left: 16px;
  transform: rotate(-10deg);
  border: 2px solid var(--stamp-green);
  color: var(--stamp-green);
  font-family: var(--font-ui);
  font-weight:800;
  font-size:0.6rem;
  letter-spacing:0.06em;
  text-transform:uppercase;
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
  opacity:0.8;
  mix-blend-mode: multiply;
}
.ticket__grade-stamp{
  position:absolute;
  top: 14px;
  right: 16px;
  transform: rotate(9deg);
  border: 3px solid var(--stamp-green);
  color: var(--stamp-green);
  font-family: var(--font-display);
  font-size:1.3rem;
  line-height:1;
  padding: 0.25rem 0.55rem;
  border-radius: 6px;
  opacity:0.85;
  mix-blend-mode: multiply;
}
.ticket__grade-stamp--mid{ border-color: var(--stamp-gold); color: var(--stamp-gold); }
.ticket__grade-stamp--low{ border-color: var(--stamp-red); color: var(--stamp-red); }
.ticket__header{
  text-align:center;
  padding-bottom:1rem;
}
.ticket__restaurant{
  font-family: var(--font-display);
  font-size:1.5rem;
  text-transform:uppercase;
  letter-spacing:0.03em;
  margin:0;
}
.ticket__sub{
  font-size:0.72rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color: var(--ink-soft);
  margin-top:0.35rem;
}
.ticket__location{
  font-size:0.72rem;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color: var(--ink-soft);
  margin-top:0.2rem;
}
.ticket hr.rule{
  border:none;
  border-top:1px dashed var(--rule);
  margin: 0.9rem 0;
}
.ticket__meta-row{
  display:flex;
  justify-content:space-between;
  font-size:0.78rem;
  color: var(--ink-soft);
}
.ticket__items{
  list-style:none;
  margin:0.4rem 0 0;
  padding:0;
}
.ticket__items li{
  display:flex;
  justify-content:space-between;
  gap:0.75rem;
  font-size:0.85rem;
  padding:0.28rem 0;
}
.ticket__items li .qty{
  color: var(--ink-soft);
  flex:0 0 auto;
}
.ticket__items li .name{ flex:1; }
.ticket__items li .name .glossary-term{
  border-bottom: 1px dotted var(--ink-soft);
  cursor: help;
}
.ticket__total-row{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  font-family: var(--font-display);
  font-size:1.1rem;
  padding: 0.9rem 0;
}
.ticket__total-row span:last-child{ font-size:1.6rem; }

.ticket__qr{
  width: 116px;
  height: 116px;
  margin: 0.6rem auto 0.5rem;
  background: #FFFFFF;
  padding: 8px;
  border-radius: 3px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.15);
  display:flex;
  align-items:center;
  justify-content:center;
}
.ticket__qr img{
  image-rendering: pixelated;
}
.ticket__qr-fallback{
  font-size: 0.62rem;
  color: var(--ink-soft);
  text-decoration: underline;
}
.ticket__qr-caption{
  text-align:center;
  font-size:0.62rem;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color: var(--ink-soft);
  margin: 0 0 0.6rem;
}
.ticket__barcode-caption{
  text-align:center;
  font-size:0.65rem;
  letter-spacing:0.2em;
  color: var(--ink-soft);
  padding-bottom:1.3rem;
}

/* =========================================================
   SCORE BREAKDOWN
   ========================================================= */
.score-breakdown{
  max-width:640px;
  margin: 0 auto 3rem;
  background: var(--paper-dark);
  padding: 1.75rem 1.75rem 2rem;
  border-radius: var(--radius-s);
}
.score-breakdown h2{
  font-family: var(--font-ui);
  font-size:0.8rem;
  text-transform:uppercase;
  letter-spacing:0.14em;
  color: var(--ink-soft);
  text-align:center;
  margin-bottom:1.3rem;
}
.score-line{ margin-bottom:1rem; }
.score-line__label{
  display:flex;
  justify-content:space-between;
  font-family: var(--font-mono);
  font-size:0.85rem;
  margin-bottom:0.35rem;
}
.score-line__track{
  height:8px;
  background: #D6CDBA;
  border-radius: 999px;
  overflow:hidden;
}
.score-line__fill{
  height:100%;
  background: var(--ink);
  border-radius:999px;
}
.score-total-line{
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-top:2px solid var(--ink);
  margin-top:1.2rem;
  padding-top:1rem;
  font-family: var(--font-display);
  font-size:1.3rem;
}

/* =========================================================
   REVIEW GALLERY (optional photos, shown under the scorecard)
   ========================================================= */
.review-gallery{
  max-width:720px;
  margin: 0 auto 3rem;
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.75rem;
}
.review-gallery__img{
  width:100%;
  height:auto;
  border-radius: var(--radius-s);
  display:block;
  box-shadow: 0 10px 24px -14px rgba(0,0,0,0.5);
}

/* =========================================================
   REVIEW BODY SECTIONS (per-category write-up, bold headings)
   ========================================================= */
.review-body-sections{
  max-width:640px;
  margin: 0 auto 3rem;
  color:#D8D3C7;
}
.review-body-section{
  margin-bottom:1.8rem;
}
.review-body-section:last-child{
  margin-bottom:0;
}
.review-body-section__heading{
  font-family: var(--font-display);
  font-size:1.1rem;
  text-transform:uppercase;
  letter-spacing:0.04em;
  color: var(--paper);
  margin:0 0 0.5rem;
}
.review-body-section p{
  margin:0 0 0.9rem;
  line-height:1.7;
}
.review-body-section p:last-child{
  margin-bottom:0;
}

/* =========================================================
   FINAL REMARK
   ========================================================= */
.final-remark{
  max-width:600px;
  margin: 0 auto 4rem;
  text-align:center;
  color: var(--paper);
  padding: 1.5rem;
}
.final-remark__label{
  font-family: var(--font-mono);
  font-size:0.7rem;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:#9A958B;
  margin-bottom:0.75rem;
}
.final-remark p{
  font-family: 'Archivo Black', sans-serif;
  font-size:1.25rem;
  line-height:1.5;
  font-style:normal;
}

/* =========================================================
   CUISINE TAGS (bottom of a single review)
   ========================================================= */
.review-cuisine-tags{
  max-width:600px;
  margin: -2rem auto 4rem;
  text-align:center;
  display:flex;
  flex-wrap:wrap;
  gap:0.5rem;
  justify-content:center;
}
.review-cuisine-tag{
  font-family: var(--font-mono);
  font-size:0.78rem;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color: var(--paper);
  text-decoration:none;
  border:1px solid #47433C;
  border-radius:999px;
  padding:0.4rem 1rem;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.review-cuisine-tag:hover{
  border-color: var(--stamp-gold);
  color: var(--stamp-gold);
}

/* =========================================================
   GLOSSARY
   ========================================================= */
.glossary-tooltip{
  position:absolute;
  z-index:50;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-ui);
  font-size:0.78rem;
  line-height:1.4;
  padding:0.55rem 0.75rem;
  border-radius:4px;
  max-width:240px;
  box-shadow: 0 10px 24px rgba(0,0,0,0.4);
  pointer-events:none;
}
.glossary-page{
  max-width:720px;
  margin:0 auto;
  color: var(--paper);
}
.glossary-page__intro{
  font-family: var(--font-mono);
  font-size:1.05rem;
  color:#B4AFA4;
  text-align:center;
  margin-bottom:2.5rem;
}
.glossary-list dt{
  font-family: var(--font-display);
  font-size:1.25rem;
  margin-top:1.6rem;
  color: var(--paper);
}
.glossary-list dt .pronunciation{
  font-family: var(--font-mono);
  font-size:0.85rem;
  color:#9A958B;
  font-weight:normal;
  margin-left:0.6rem;
  text-transform:none;
}
.glossary-list dd,
.glossary-list dd p{
  margin:0.35rem 0 0;
  font-size:1.05rem;
  color: var(--paper) !important;
  line-height:1.6;
}
.glossary-jump{
  display:flex;
  flex-wrap:wrap;
  gap:0.4rem;
  justify-content:center;
  margin-bottom:2rem;
  font-family: var(--font-mono);
}
.glossary-jump a{
  text-decoration:none;
  color:#9A958B;
  border:1px solid #47433C;
  border-radius:50%;
  width:28px; height:28px;
  display:flex; align-items:center; justify-content:center;
  font-size:0.75rem;
}
.glossary-jump a:hover{ color:var(--paper); border-color:var(--paper); }

/* =========================================================
   INSTAGRAM SLIDE EXPORT
   Two fixed 1080x1350 "slides", rendered off-screen and only
   ever seen by an editor via the export button — captured to
   PNG client-side (html2canvas), never sent anywhere.
   ========================================================= */
.ig-export-trigger{
  text-align:center;
  margin: 3rem auto;
}
.ig-export-btn{
  background: var(--stamp-gold);
  color:#1E1B18;
  border:none;
  padding:0.85rem 1.6rem;
  border-radius:999px;
  font-family: var(--font-ui);
  font-weight:700;
  font-size:0.9rem;
  cursor:pointer;
}
.ig-export-btn:disabled{ opacity:0.6; cursor:wait; }
.ig-export-note{
  font-family: var(--font-mono);
  font-size:0.7rem;
  color:#7C776D;
  margin-top:0.6rem;
}

.ig-export-wrap{
  position:absolute;
  left:-99999px;
  top:0;
}
.ig-slide{
  width:1080px;
  height:1350px;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-mono);
  padding:90px 80px;
  box-sizing:border-box;
  position:relative;
  display:flex;
  flex-direction:column;
}
.ig-slide__brand{
  font-family: var(--font-display);
  font-size:28px;
  letter-spacing:0.12em;
  text-align:center;
  color: var(--ink-soft);
  margin:0 0 40px;
}
.ig-slide__type-stamp{
  position:absolute; top:70px; right:70px;
  width:200px;
  height:56px;
  border:4px solid var(--stamp-green);
  border-radius:10px;
  transform:rotate(-10deg);
  box-sizing:border-box;
  display:table;
}
.ig-slide__type-stamp-inner{
  display:table-cell;
  vertical-align:middle;
  text-align:center;
  color: var(--stamp-green);
  font-family: var(--font-ui);
  font-weight:800;
  font-size:22px;
  line-height:1;
  padding-top:5px;
  letter-spacing:0.08em;
  text-transform:uppercase;
}
.ig-slide__restaurant{
  font-family: var(--font-display);
  font-size:64px;
  text-align:center;
  text-transform:uppercase;
  margin:0 0 12px;
  line-height:1.15;
}
.ig-slide__restaurant--small{ font-size:44px; margin-bottom:60px; }
.ig-slide__meta{
  text-align:center;
  font-size:22px;
  color: var(--ink-soft);
  margin:0 0 40px;
}
.ig-slide__rule{ border-top:3px dashed var(--rule); margin:30px 0; }
.ig-slide__items{ list-style:none; margin:0; padding:0; flex:1; }
.ig-slide__items li{ display:flex; gap:20px; font-size:28px; padding:14px 0; }
.ig-slide__items li .qty{ color:var(--ink-soft); flex:0 0 auto; }
.ig-slide__total{
  display:flex;
  justify-content:space-between;
  font-family: var(--font-display);
  font-size:40px;
  padding:20px 0;
}
.ig-slide__qr-row{ text-align:center; margin-top:20px; }
.ig-slide__qr{ width:260px; height:260px; margin:0 auto 20px; padding:16px; }
.ig-slide__qr-caption{
  font-size:22px;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color: var(--ink-soft);
}
.ig-slide__receipt-no{
  text-align:center;
  font-size:20px;
  letter-spacing:0.2em;
  color: var(--ink-soft);
  margin-top:20px;
}
.ig-slide__score-heading{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  border-bottom:3px solid var(--ink);
  padding-bottom:20px;
  margin-bottom:50px;
  font-family: var(--font-display);
}
.ig-slide__score-heading span:first-child{ font-size:32px; text-transform:uppercase; letter-spacing:0.08em; }
.ig-slide__score-total{ font-size:56px; }
.ig-slide__lines{ flex:1; display:flex; flex-direction:column; justify-content:center; gap:36px; }
.ig-slide__line-label{ display:flex; justify-content:space-between; font-size:30px; margin-bottom:12px; }
.ig-slide__line-track{ height:24px; background:#D6CDBA; border-radius:999px; overflow:hidden; }
.ig-slide__line-fill{ height:100%; background:var(--ink); border-radius:999px; }
.ig-slide__footer{
  text-align:center;
  font-family: var(--font-display);
  font-size:26px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color: var(--ink-soft);
  margin-top:40px;
}

/* Coming Soon teaser variant */
.ig-slide--teaser{
  justify-content:center;
}
.ig-slide__coming-soon{
  position:absolute;
  top:210px;
  left:50%;
  transform: translateX(-50%) rotate(-6deg);
  border:6px solid var(--stamp-red);
  color: var(--stamp-red);
  font-family: var(--font-ui);
  font-weight:800;
  font-size:46px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  padding:14px 36px;
  border-radius:14px;
  white-space:nowrap;
}
.ig-slide--teaser .ig-slide__restaurant{
  margin-top:320px;
}
.ig-slide__line-track--redacted{
  background-image: repeating-linear-gradient(
    45deg,
    var(--ink) 0px,
    var(--ink) 10px,
    #D6CDBA 10px,
    #D6CDBA 20px
  );
  opacity:0.35;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 540px){
  .ticket{ max-width: 92vw; padding: 1.8rem 1.2rem 0; }
}

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

/* keyboard focus */
a:focus-visible, button:focus-visible{
  outline: 2px solid var(--stamp-gold);
  outline-offset: 2px;
}
