@page {
  size: A4 portrait;
  margin: 12mm;
}

@media print {
  :root {
    --cream: #f7edda;
    --paper: #fff9ed;
    --tomato: #e9442a;
    --tomato-dark: #b72a1d;
    --yolk: #f4bb22;
    --basil: #1e7047;
    --aubergine: #35223d;
    --ink: #241b1a;
    --muted: #655752;
    --line: rgba(36, 27, 26, .24);
  }

  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }

  html,
  body {
    width: auto !important;
    min-width: 0 !important;
    overflow: visible !important;
  }

  html {
    scroll-behavior: auto;
  }

  body {
    background: white;
    color: var(--ink);
    font-size: 9.5pt;
    line-height: 1.35;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  a {
    color: inherit;
    text-decoration: none;
  }

  p,
  li,
  dd {
    orphans: 3;
    widows: 3;
  }

  h1,
  h2,
  h3,
  h4 {
    break-after: avoid-page;
  }

  img,
  .guest-card,
  .method-step,
  .schedule li,
  .photo-card {
    break-inside: avoid-page;
  }

  .paper-noise,
  .site-header nav,
  .header-actions,
  .admin-bar,
  .hero-actions,
  .countdown-part,
  .pan-status,
  .calendar-actions,
  .ticker,
  .now-board,
  .rsvp-grid,
  .song-form,
  .upload-form,
  .guest-delete,
  .song-delete,
  .photo-delete,
  .lightbox,
  .toast,
  footer {
    display: none !important;
  }

  .wrap,
  .site-header {
    width: 100%;
    max-width: none;
    margin-inline: 0;
  }

  .site-header {
    min-height: 16mm;
    border-bottom: 1pt solid var(--ink);
  }

  .brand {
    gap: 2.5mm;
    font-size: 7.5pt;
  }

  .brand-sun {
    width: 9mm;
    height: 9mm;
    flex-basis: 9mm;
  }

  .hero {
    min-height: 244mm;
    grid-template-columns: .92fr 1.08fr;
    gap: 4mm;
    padding: 0;
    overflow: visible;
    break-after: page;
  }

  .hero-copy {
    padding: 18mm 0 16mm;
  }

  .eyebrow {
    margin-bottom: 4mm;
    font-size: 7.5pt;
    letter-spacing: .14em;
  }

  h1 {
    font-size: 49pt;
    line-height: .92;
  }

  h1 em {
    text-shadow: 1.2pt 1.2pt 0 var(--ink);
  }

  .hero-intro {
    max-width: 78mm;
    margin: 8mm 0;
    font-size: 11pt;
    line-height: 1.5;
  }

  .hero-invitation {
    margin-top: 12mm;
  }

  .invitation-calendar {
    grid-template-columns: 20mm minmax(0, 1fr);
    gap: 5mm;
  }

  .calendar-tile {
    width: 20mm;
    gap: 1mm;
  }

  .calendar-tile strong {
    font-size: 28pt;
  }

  .calendar-tile span {
    font-size: 7pt;
  }

  .invitation-details {
    font-size: 11pt;
  }

  .invitation-details .invitation-day {
    font-size: 14pt;
  }

  .invitation-details .invitation-location {
    font-size: 10pt;
  }

  .hero-art {
    min-height: 150mm;
  }

  .pan {
    width: 92mm;
    box-shadow: 0 7mm 0 rgba(91, 43, 27, .12);
  }

  .pan-handle {
    right: -9mm;
    bottom: 48mm;
    width: 46mm;
    height: 14mm;
    border-width: 3mm;
  }

  .steam {
    top: 29mm;
    font-size: 72pt;
  }

  .steam-one {
    left: 27%;
  }

  .steam-two {
    top: 24mm;
    left: 50%;
  }

  .dashboard,
  .recipe-section,
  .gallery-section {
    padding: 7mm 0 4mm;
  }

  .section-heading,
  .recipe-heading {
    grid-template-columns: 1.15fr .85fr;
    gap: 12mm;
    margin-bottom: 8mm;
  }

  .section-heading h2,
  .recipe-heading h2,
  .playlist-grid h2,
  .rsvp-copy h2 {
    font-size: 31pt;
  }

  .section-heading > p,
  .recipe-heading > div > p,
  .playlist-grid > div > p,
  .rsvp-copy > p {
    font-size: 9pt;
    line-height: 1.5;
  }

  .schedule {
    border-top-color: var(--ink);
  }

  .schedule li {
    min-height: 21mm;
    grid-template-columns: 24mm 1fr 10mm;
    gap: 4mm;
    padding: 3mm 0;
  }

  .schedule li:hover {
    padding-inline: 0;
    background: transparent;
  }

  .schedule time {
    font-size: 16pt;
  }

  .schedule h3 {
    margin-bottom: 1mm;
    font-size: 12pt;
  }

  .schedule p {
    font-size: 8.5pt;
  }

  .doodle {
    font-size: 15pt;
  }

  .rsvp-section {
    min-height: 273mm;
    margin: 0;
    padding: 12mm 8mm;
    overflow: visible;
    background: var(--tomato);
    break-before: page;
    break-after: page;
  }

  .rsvp-section::before {
    right: -12mm;
    top: -8mm;
    font-size: 110pt;
  }

  .guest-board {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
  }

  .guest-board-heading {
    grid-template-columns: 1fr 1fr;
    gap: 8mm;
    margin-bottom: 6mm;
  }

  .guest-board-heading h3 {
    font-size: 25pt;
  }

  .guest-board-heading > p {
    font-size: 8pt;
  }

  .guest-list {
    grid-template-columns: repeat(3, 1fr);
    gap: 4mm;
  }

  .guest-card {
    padding: 4mm;
    box-shadow: 1.2mm 1.2mm 0 var(--ink);
  }

  .guest-card:nth-child(even) {
    box-shadow: 1.2mm 1.2mm 0 var(--yolk);
  }

  .guest-card header {
    gap: 2mm;
    padding-bottom: 2.5mm;
  }

  .guest-card h4 {
    font-size: 14pt;
  }

  .guest-card dl {
    margin-top: 2.5mm;
  }

  .guest-card dl > div {
    grid-template-columns: 19mm 1fr;
    gap: 2mm;
    padding: 1.8mm 0;
  }

  .guest-card dt {
    font-size: 5.5pt;
  }

  .guest-card dd {
    font-size: 7.5pt;
  }

  .attendance-badge {
    padding: 1.2mm 1.8mm;
    font-size: 5pt;
  }

  .recipe-section {
    break-before: page;
    break-after: page;
  }

  .recipe-heading {
    align-items: center;
  }

  .recipe-heading > div > p {
    margin-top: 4mm;
  }

  .serving-control {
    min-width: 38mm;
    padding: 3mm 5mm;
    box-shadow: 1.2mm 1.2mm 0 var(--ink);
  }

  .serving-control button {
    display: none;
  }

  .serving-control > div {
    justify-content: center;
    margin: 1mm 0 0;
  }

  .serving-control strong {
    font-size: 25pt;
  }

  .recipe-layout {
    grid-template-columns: .88fr 1.12fr;
    gap: 10mm;
  }

  .ingredients-card {
    padding: 7mm;
    box-shadow: 2mm 2mm 0 var(--yolk);
  }

  .card-label {
    padding-bottom: 3mm;
    font-size: 7pt;
  }

  .ingredients-card li {
    grid-template-columns: 20mm 1fr;
    padding: 2.2mm 0;
    font-size: 8pt;
  }

  .method-step {
    grid-template-columns: 10mm 1fr;
    gap: 3mm;
    margin-bottom: 2mm;
    padding: 2mm 0 4mm;
  }

  .method-step > span {
    width: 9mm;
    height: 9mm;
    font-size: 14pt;
    box-shadow: 1mm 1mm 0 var(--yolk);
  }

  .method-step h3 {
    margin-bottom: 1.5mm;
    font-size: 11pt;
  }

  .method-step p {
    font-size: 8.5pt;
    line-height: 1.5;
  }

  .playlist-section {
    padding: 9mm;
    overflow: visible;
    break-before: page;
    break-after: page;
  }

  .playlist-grid {
    grid-template-columns: .65fr 1.35fr;
    gap: 9mm;
    align-items: start;
  }

  .playlist-grid > div > p {
    margin: 4mm 0;
  }

  .record-sleeve {
    min-height: 210mm;
    padding-top: 79mm;
  }

  .record {
    top: 0;
    right: -4mm;
    width: 86mm;
    box-shadow: 1mm 4mm 5mm rgba(0, 0, 0, .22);
  }

  .record > div {
    width: 28mm;
  }

  .record strong {
    font-size: 14pt;
  }

  .queue-card {
    position: relative;
    inset: auto;
    width: 100%;
    max-height: none;
    overflow: visible;
    padding: 5mm;
    box-shadow: 1.5mm 1.5mm 0 var(--tomato);
    transform: rotate(-1deg);
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .queue-title {
    padding-bottom: 2.5mm;
    font-size: 7pt;
  }

  .queue-card li {
    padding: 2mm 1mm;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .queue-card ol {
    columns: 2;
    column-gap: 9mm;
    column-rule: 1px solid var(--line);
  }

  .queue-card li strong {
    font-size: 8.5pt;
  }

  .queue-card li span {
    font-size: 7pt;
  }

  .gallery-section {
    min-height: 207mm;
    break-before: page;
  }

  .gallery-section .section-heading {
    margin-bottom: 7mm;
  }

  .gallery-grid {
    columns: 2;
    column-gap: 6mm;
  }

  .photo-card {
    display: inline-block;
    width: 100%;
    margin-bottom: 4mm;
    padding: 2mm 2mm 3mm;
    overflow: hidden;
    break-inside: avoid;
    page-break-inside: avoid;
    -webkit-column-break-inside: avoid;
    box-shadow: 1mm 1.2mm 2mm rgba(53, 34, 61, .1);
    vertical-align: top;
  }

  .photo-card img {
    max-height: 118mm;
  }

  .photo-card p {
    margin: 2.5mm 1mm .5mm;
    font-size: 9pt;
  }

  .photo-card small {
    margin-left: 1mm;
    font-size: 7pt;
  }

  .gallery-empty {
    min-height: 55mm;
  }

  .gallery-empty span {
    font-size: 30pt;
  }

  footer {
    margin-top: 8mm;
    padding: 7mm;
    break-inside: avoid-page;
  }

  .footer-ticket {
    padding: 8mm 6mm;
  }

  .footer-ticket h2 {
    font-size: 32pt;
  }

  .footer-date {
    margin: 4mm 0 0;
    font-size: 9pt;
  }


}
