/* Đồ vật trên trang khách (page-objects.js): sổ, huy hiệu, laptop dán sticker, vé, ly, giấy note, điện thoại,
   bìa giấy băng cassette, màn hình CRT, mini-me, lịch xé, thiệp, bưu thiếp, tem. Mỗi món mang màu câu trả lời
   (--c, đã qua swatch); giấy in là màu quán (--cr-print) nên trang nào cũng cùng một chất giấy.
   html[data-art="drawn"]: đồ vật vẽ nét như sổ phác thảo (viền mực, bỏ bóng đổ mềm). */

.obj { --paper: #efe7d6; --ink: var(--cr-print-ink); --ink-2: #5f5546; position: relative; min-width: 0; container-type: inline-size; overflow-wrap: anywhere; } /* chữ khách gõ liền (hashtag, link) vẫn xuống dòng trong món đồ */
/* Chữ trong món đồ và con tem (cả bản riêng) chia dòng kiểu "pretty": tránh một chữ đứng một mình ở dòng cuối, tránh
   dòng bị bóp còn một hai chữ. Trình duyệt chưa hỗ trợ thì chia dòng như thường. */
:is(.obj, .stamp) { text-wrap: pretty; }
.obj__label { display: block; font: 450 var(--fs-label)/1.35 var(--font-label); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-2); }
.obj__caption { display: block; margin-top: var(--sp-3); font: 450 var(--fs-label)/1.35 var(--font-label); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--you-muted); }
.obj__sub { margin-top: var(--sp-2); font-size: var(--fs-small); line-height: 1.45; color: var(--you-muted); }
.obj .only-you { margin-top: var(--sp-3); }
[data-art="drawn"] .obj :is(.book, .badge, .laptop, .ticket-stub, .tag, .note, .phone, .jcard, .crt, .tear, .bday, .postcard, .paper, .stamp-in) {
  box-shadow: none !important; outline: 1.5px solid rgb(20 17 12 / .78); outline-offset: -1px;
}
[data-art="drawn"] .cup__saucer, [data-art="drawn"] .cup__body { box-shadow: 0 0 0 1.5px rgb(20 17 12 / .78) !important; }

/* Sổ mở, câu mùa này viết bên trong; bìa là màu nhấn 1 "dưới đèn". */
.book { display: grid; grid-template-columns: .8fr 1.2fr; min-height: 210px; padding: 7px; border-radius: calc(5px * var(--r-scale)); background: var(--you-1-lit); box-shadow: var(--shadow-print); }
.book__page { position: relative; padding: 18px 16px 16px; background: var(--paper) repeating-linear-gradient(180deg, transparent 0 calc(1.625rem - 1px), rgb(42 36 28 / .13) calc(1.625rem - 1px) 1.625rem) 0 12px; } /* dòng kẻ theo cỡ chữ */
.book__page--l { border-radius: 2px 0 0 2px; box-shadow: inset -14px 0 16px -12px rgb(0 0 0 / .35); }
.book__page--r { border-radius: 0 2px 2px 0; box-shadow: inset 14px 0 16px -12px rgb(0 0 0 / .3); }
.book__mark { position: absolute; top: -7px; right: 18px; width: 12px; height: 62px; background: var(--you-2); clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 84%, 0 100%); }
.book__line { font-family: var(--font-you); font-weight: 500; font-style: var(--you-name-style); font-size: 1.125rem; line-height: 1.625rem; color: var(--ink); text-wrap: pretty; overflow-wrap: anywhere; }
[data-voice="may_chu"] .book__line { font-size: 1rem; font-weight: 400; }
[data-voice="gon"] .book__line { font-weight: 400; }

/* Huy hiệu tròn: hôm nay */
.badge { display: grid; place-content: center; text-align: center; gap: 2px; width: min(100%, 140px); aspect-ratio: 1; border-radius: 50%; background: var(--c); color: #1b1508; box-shadow: var(--shadow-print), inset 0 0 0 6px rgb(255 255 255 / .22), inset 0 -10px 18px rgb(0 0 0 / .12); }
.badge__k { font: 450 .6875rem/1.2 var(--font-label); letter-spacing: .1em; text-transform: uppercase; } /* mực đậm, không làm mờ: trên màu khách tối nhất của swatch (OKLCH L 0,62) còn 4,6:1 */
.badge__v { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.375rem; line-height: 1.05; padding-inline: 10px; }

/* Laptop nhìn từ trên (nắp gập), dán sticker: tới để làm gì */
.laptop { position: relative; display: flex; flex-wrap: wrap; align-content: center; justify-content: center; gap: 10px 8px; min-height: 180px; padding: 30px 22px; border-radius: calc(12px * var(--r-scale)); background: linear-gradient(160deg, #474a50, #2b2d31 60%, #232427); box-shadow: var(--shadow-lift), inset 0 1px 0 rgb(255 255 255 / .08); }
[data-mode="sang"] .laptop { background: linear-gradient(160deg, #e3e4e6, #c9cbcf); }
.laptop__notch { position: absolute; top: 50%; left: 50%; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; background: rgb(255 255 255 / .06); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .08); }
.sticker { position: relative; display: inline-block; padding: .45em .9em .42em; border-radius: var(--r-pill); font: 700 .9375rem/1.15 var(--font-body); color: #1b1508; background: var(--c); box-shadow: 0 2px 0 rgb(0 0 0 / .2); rotate: -4deg; }
.sticker--1 { background: var(--you-2-lit); rotate: 5deg; border-radius: calc(6px * var(--r-scale)); }
.sticker--2 { background: var(--you-1-lit); rotate: -1.5deg; font-family: var(--font-you); font-weight: var(--you-name-weight); }
.paper { padding: 22px 18px 18px; background: var(--paper); box-shadow: var(--shadow-print); border-radius: var(--r-paper); }
.paper--list { display: flex; flex-wrap: wrap; gap: 10px 8px; align-items: center; }
.paper--list .obj__label { width: 100%; margin-bottom: 4px; }

/* Vé: góc ruột + đi cùng ai. Răng cắt hai đầu đường xé bằng mask. */
.ticket-stub {
  --cut: 68%;
  display: grid; grid-template-columns: var(--cut) 1fr; min-height: 112px; background: var(--paper); color: var(--ink); box-shadow: var(--shadow-print);
  border-radius: calc(4px * var(--r-scale));
  -webkit-mask: radial-gradient(circle 9px at var(--cut) 0, #0000 97%, #000) top / 100% 51% no-repeat, radial-gradient(circle 9px at var(--cut) 100%, #0000 97%, #000) bottom / 100% 51% no-repeat;
  mask: radial-gradient(circle 9px at var(--cut) 0, #0000 97%, #000) top / 100% 51% no-repeat, radial-gradient(circle 9px at var(--cut) 100%, #0000 97%, #000) bottom / 100% 51% no-repeat;
}
.ticket-stub__main { display: grid; align-content: center; gap: 4px; padding: 14px 14px 14px 20px; border-left: 8px solid var(--c); }
.ticket-stub__main strong { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.25rem; line-height: 1.12; }
.ticket-stub__tear { display: grid; place-content: center; padding: 10px; border-left: 2px dashed rgb(42 36 28 / .3); font: 450 .75rem/1.3 var(--font-label); text-align: center; color: var(--ink-2); }
/* "Đi cùng" / "một mình" ở cuống vé: cuống hẹp (vé hai cột) thì hai dòng, không dấu "·"; vé một cột thì một dòng có dấu
   (khối @container bên dưới). Mỗi nửa không bao giờ gãy. */
.ticket-stub__pair { display: grid; gap: 2px; }
.ticket-stub__pair > span { white-space: nowrap; }

/* Ly nhìn từ trên: đĩa, miệng ly, nước màu món */
.obj--cup { display: grid; justify-items: center; gap: var(--sp-3); }
.cup { position: relative; width: 132px; aspect-ratio: 1; }
.cup__saucer { position: absolute; inset: 0; border-radius: 50%; background: radial-gradient(circle at 40% 35%, #f8f4ec, #ddd5c6); box-shadow: 0 10px 20px rgb(0 0 0 / .35); }
.cup__body { position: absolute; inset: 17%; border-radius: 50%; background: #f6f2ea; box-shadow: 0 4px 8px rgb(0 0 0 / .25), inset 0 0 0 3px #e7e0d3; }
.cup__drink { position: absolute; inset: 9%; border-radius: 50%; background: radial-gradient(circle at 38% 34%, color-mix(in oklab, var(--c) 70%, #fff), var(--c) 55%, color-mix(in oklab, var(--c) 78%, #000)); }
.cup__handle { position: absolute; top: 44%; right: 2%; width: 20px; height: 14px; border-radius: 0 8px 8px 0; background: #ece6da; box-shadow: 2px 2px 3px rgb(0 0 0 / .2); }
.tag { display: grid; gap: 2px; padding: 8px 14px 9px; background: var(--paper); color: var(--ink); border-radius: 3px; box-shadow: var(--shadow-print); text-align: center; rotate: 3deg; }
.tag strong { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.125rem; line-height: 1.15; }

/* Giấy note: ba chữ bạn bè hay nói */
.obj--notes .obj__label--float { color: var(--you-muted); margin-bottom: var(--sp-3); }
.notes { display: flex; flex-wrap: wrap; gap: 12px; }
.note { display: grid; place-content: center; width: min(6.5rem, 100%); min-height: 6rem; padding: 12px; background: var(--c); color: #1b1508; text-align: center; font-family: var(--font-you); font-weight: 600; font-style: var(--you-name-style); font-size: 1.0625rem; line-height: 1.15; overflow-wrap: anywhere; box-shadow: 0 1px 1px rgb(0 0 0 / .15), 0 12px 16px -10px rgb(0 0 0 / .45); rotate: -3deg; }
.note--1 { rotate: 4deg; background: color-mix(in oklab, var(--c) 82%, #fff); }
.note--2 { rotate: -1deg; background: color-mix(in oklab, var(--c) 86%, var(--you-2-lit)); }

/* Điện thoại (trên bàn) và bìa giấy băng cassette (trên tường): bài đang nghe lặp lại */
.phone { position: relative; display: grid; align-content: end; gap: 6px; width: min(100%, 170px); aspect-ratio: 9 / 16.5; padding: 18px 14px; border-radius: calc(22px * var(--r-scale) * .8 + 8px); background: linear-gradient(180deg, #1a1c20, #0d0e10); color: #f2ede3; box-shadow: var(--shadow-lift), inset 0 0 0 2px #2c2f35; overflow: hidden; }
.phone::before { content: ""; position: absolute; inset: 0; background: radial-gradient(90% 55% at 50% 30%, color-mix(in oklab, var(--c) 55%, transparent), transparent 70%); }
.phone > * { position: relative; }
.phone__cam { position: absolute; top: 10px; left: 50%; width: 36px; height: 8px; margin-left: -18px; border-radius: 6px; background: #000; }
.phone .obj__label { color: rgb(242 237 227 / .7); }
.phone__title { font: 700 1rem/1.25 var(--font-body); overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.phone__bar { height: 4px; border-radius: 4px; background: rgb(255 255 255 / .18); margin-top: 6px; }
.phone__bar i { display: block; width: 38%; height: 100%; border-radius: inherit; background: var(--c); }
.phone__keys { display: flex; justify-content: center; gap: 18px; margin-top: 4px; }
.phone__keys i { width: 8px; height: 8px; border-radius: 50%; background: rgb(255 255 255 / .5); }
.phone__keys i:nth-child(2) { width: 14px; height: 14px; margin-top: -3px; background: #fff; }
.jcard { display: grid; grid-template-columns: 2.1rem 1fr; width: min(100%, 270px); border-radius: 3px; background: var(--paper); color: var(--ink); box-shadow: var(--shadow-print); overflow: hidden; } /* bìa giấy gấp của băng cassette: gáy + mặt trước */
.jcard__spine { writing-mode: vertical-rl; rotate: 180deg; padding: 12px 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align: center; font: 600 .6875rem/2.1rem var(--font-label); letter-spacing: .08em; text-transform: uppercase; background: color-mix(in oklab, var(--c) 62%, var(--paper)); color: var(--ink); }
.jcard__front { display: grid; align-content: start; gap: 6px; padding: 12px 14px 14px; border-top: 7px solid var(--c); background: linear-gradient(90deg, rgb(42 36 28 / .1), transparent 14px) var(--paper); } /* bóng nếp gấp sát gáy */
.jcard__title { font: 500 1rem/1.3 var(--font-label); overflow-wrap: anywhere; }
.jcard__lines { height: 3.75rem; background: repeating-linear-gradient(180deg, transparent 0 calc(1.25rem - 1px), rgb(42 36 28 / .14) calc(1.25rem - 1px) 1.25rem); }

/* Màn hình CRT: hồi còn là quán net */
.crt { position: relative; padding: 16px 16px 30px; border-radius: calc(14px * var(--r-scale)); background: linear-gradient(180deg, #d9d1be, #bdb39d); box-shadow: var(--shadow-lift), inset 0 -4px 0 rgb(0 0 0 / .12); }
.crt__screen { position: relative; min-height: 150px; display: grid; align-content: center; padding: 18px 16px; border-radius: 22px / 18px; background: radial-gradient(90% 80% at 50% 50%, color-mix(in oklab, var(--c) 20%, #0b1410), #050806); box-shadow: inset 0 0 26px rgb(0 0 0 / .8), 0 0 0 4px #9f9581; overflow: hidden; }
.crt__screen::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(180deg, rgb(0 0 0 / .26) 0 1px, transparent 1px 3px); pointer-events: none; }
.crt__screen p { position: relative; font: 400 1rem/1.5 var(--font-label); color: var(--c); text-shadow: 0 0 8px color-mix(in oklab, var(--c) 60%, transparent); }
.crt__caret { display: inline-block; width: .55em; height: 1em; margin-left: .2em; vertical-align: -.15em; background: var(--c); animation: caret 1.1s steps(1) 2s 5; }
/* Giảm chuyển động (của máy hay nút ở chân trang): con trỏ đứng yên. Đặt ở đây vì tệp này nạp sau page.css. */
@media (prefers-reduced-motion: reduce) { .crt__caret { animation: none; } }
[data-motion="reduce"] .crt__caret { animation: none; }
.crt__led { position: absolute; right: 22px; bottom: 11px; width: 8px; height: 8px; border-radius: 50%; background: #7ee08a; box-shadow: 0 0 8px #7ee08a; }

/* Mini-me (vẽ ở khong-gian/minime.js): không khung tròn. Người ngồi dưới đèn, nền trong suốt; mỗi bố cục đặt vào cảnh
   của mình: áp phích dưới đèn treo, mặt bàn ở mép bàn dưới quầng đèn (.me-seat), tường ghim là hình giấy cắt. */
.minime { display: grid; place-items: end center; width: min(100%, 132px); aspect-ratio: 4 / 5; }
.minime svg { display: block; width: 100%; height: auto; }
.minime:not(.is-drawn) { place-items: center; border: 1.5px dashed var(--you-line); border-radius: 12px; }
/* Vũng đèn vàng dưới người (#f2c14e .22 → 0, cùng công thức với phòng của p4): đèn là của quán. */
.me-seat { position: relative; display: grid; justify-items: center; }
.me-seat__pool { position: absolute; left: 50%; bottom: 2%; width: 210%; height: 34%; translate: -50% 0; border-radius: 50%; background: radial-gradient(closest-side, rgb(242 193 78 / .22), rgb(242 193 78 / 0)); pointer-events: none; }
[data-mode="sang"] .me-seat__pool { background: radial-gradient(closest-side, rgb(214 160 40 / .3), rgb(214 160 40 / 0)); } /* nền giấy sáng: đậm hơn cho mắt thấy */
/* Bóng đổ màu mực ngay dưới người (áp phích): người ngồi trên sàn của tờ giấy, không trôi. */
.me-seat__shadow { position: absolute; left: 50%; bottom: -3%; width: 125%; height: 11%; translate: -50% 0; border-radius: 50%; background: radial-gradient(closest-side, rgb(30 24 16 / .18), rgb(30 24 16 / 0)); pointer-events: none; }
.minime--back { aspect-ratio: 3 / 4; } /* dáng back 120×160 */
.minime--seat { position: relative; width: 100%; }
/* Tường ghim: hình giấy cắt theo dáng người (viền giấy 2,5px), bóng đổ như dán trên tường, đinh ghim ở trên. */
.wall .obj--minime .minime { width: min(100%, 118px); filter: drop-shadow(2.5px 0 0 var(--paper)) drop-shadow(-2.5px 0 0 var(--paper)) drop-shadow(0 2.5px 0 var(--paper)) drop-shadow(0 -2.5px 0 var(--paper)) drop-shadow(0 7px 8px rgb(0 0 0 / .38)); }
.wall .obj--minime .minime:not(.is-drawn) { filter: none; }
.minime__wait { max-width: 9em; text-align: center; font: 450 .6875rem/1.3 var(--font-label); letter-spacing: .04em; color: var(--you-muted); }
.minime__wait::before { content: ""; display: block; width: 26px; height: 26px; margin: 0 auto 8px; border-radius: 50% 50% 40% 40%; background: var(--shirt, var(--you-1-lit)); }

/* Lịch xé: đếm ngược */
.tear { width: min(100%, 168px); background: var(--paper); color: var(--ink); box-shadow: var(--shadow-print); -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / 12px 100%; mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / 12px 100%; padding-bottom: 8px; }
.tear__head { position: relative; padding: 14px 12px 8px; background: var(--c); color: #1b1508; font: 500 .6875rem/1.2 var(--font-label); letter-spacing: .08em; text-transform: uppercase; }
.tear__head::before, .tear__head::after { content: ""; position: absolute; top: 4px; width: 8px; height: 8px; border-radius: 50%; background: rgb(0 0 0 / .35); left: 24%; }
.tear__head::after { left: auto; right: 24%; }
.tear__body { display: grid; justify-items: center; padding: 10px 10px 14px; text-align: center; }
.tear__n { font-family: var(--font-you); font-weight: var(--you-name-weight); font-size: 3.6rem; line-height: 1; padding-top: .08em; letter-spacing: -.02em; }
.tear__unit { font: 450 .75rem/1 var(--font-label); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.tear__name { margin-top: 8px; font-weight: 600; line-height: 1.25; }
.tear__sub { font-size: .8125rem; color: var(--ink-2); }

/* Thiệp sinh nhật */
.bday { display: grid; gap: 4px; padding: 18px 16px; border-radius: calc(6px * var(--r-scale)); color: #1b1508; background: conic-gradient(from 225deg at calc(100% - 22px) 22px, color-mix(in oklab, var(--c) 70%, #fff) 0 90deg, transparent 90deg) top right / 22px 22px no-repeat, var(--c); box-shadow: var(--shadow-print); }
.bday .obj__label { color: #1b1508; }
.bday strong { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.5rem; line-height: 1.05; padding-top: .08em; }
.bday span:last-child { font-size: var(--fs-small); line-height: 1.4; }
.bday.is-today { box-shadow: var(--shadow-print), 0 0 0 3px var(--cr-lamp), 0 0 36px rgb(242 193 78 / .5); }

/* Bưu thiếp: năm năm nữa */
.postcard { position: relative; display: grid; gap: 6px; align-content: start; min-height: 150px; padding: 18px 46% 18px 18px; background: var(--paper); color: var(--ink); box-shadow: var(--shadow-print); border-radius: var(--r-paper); }
.postcard strong { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.375rem; line-height: 1.1; padding-top: .06em; }
.postcard p { font-size: var(--fs-small); line-height: 1.45; color: var(--ink-2); }
.postcard__stamp { position: absolute; top: 14px; right: 14px; width: 52px; height: 62px; background: var(--c); -webkit-mask: radial-gradient(3px at 50% 50%, #0000 97%, #000) -4px -4px / 8px 8px, linear-gradient(#000 0 0) 4px 4px / calc(100% - 8px) calc(100% - 8px) no-repeat; mask: radial-gradient(3px at 50% 50%, #0000 97%, #000) -4px -4px / 8px 8px, linear-gradient(#000 0 0) 4px 4px / calc(100% - 8px) calc(100% - 8px) no-repeat; }
.postcard__lines { position: absolute; left: 58%; right: 16px; top: 92px; height: 50px; background: repeating-linear-gradient(180deg, transparent 0 15px, rgb(42 36 28 / .25) 15px 16px); }
.postcard::after { content: ""; position: absolute; top: 18px; bottom: 18px; left: 54%; width: 1px; background: rgb(42 36 28 / .2); }

/* Tem (bố cục áp phích): mép răng cưa, ô màu ở trên */
.stamp { --rot-obj: calc(var(--tilt) * var(--k) * .6); --r: 5px; --s: 14px; position: relative; display: grid; align-content: start; gap: 6px; padding: 16px 16px 18px; background: var(--cr-print); color: var(--cr-print-ink); rotate: var(--rot-obj);
  -webkit-mask: radial-gradient(var(--r) at 50% 50%, #0000 96%, #000) calc(var(--s) / -2) calc(var(--s) / -2) / var(--s) var(--s), linear-gradient(#000 0 0) 9px 9px / calc(100% - 18px) calc(100% - 18px) no-repeat;
  mask: radial-gradient(var(--r) at 50% 50%, #0000 96%, #000) calc(var(--s) / -2) calc(var(--s) / -2) / var(--s) var(--s), linear-gradient(#000 0 0) 9px 9px / calc(100% - 18px) calc(100% - 18px) no-repeat;
  filter: drop-shadow(0 6px 10px rgb(0 0 0 / .18));
}
.stamp__ink { display: block; height: 64px; margin-bottom: 6px; border-radius: 1px; background: var(--c); box-shadow: inset 0 0 0 4px rgb(255 255 255 / .35); }
.stamp .obj__label { color: #5f5546; }
.stamp__v { font-family: var(--font-you); font-weight: var(--you-name-weight); font-style: var(--you-name-style); font-size: 1.1875rem; line-height: 1.15; overflow-wrap: anywhere; text-wrap: pretty; }
.stamp__big { font-family: var(--font-you); font-weight: var(--you-name-weight); font-size: 2.6rem; line-height: 1; padding-top: .06em; }
.stamp__big small { font-size: .9rem; font-family: var(--font-label); font-weight: 450; }
.stamp .obj__sub, .stamp .only-you { color: #5f5546; }

/* Bảng pha màu (mặt bàn) và tờ lịch màu (tường ghim) */
.obj--chips { display: grid; gap: var(--sp-3); }
.obj--chips > .obj__label, .obj--chips > .t-small { color: var(--you-muted); }
.obj--palcal { padding: 26px 16px 18px; background: var(--paper); color: var(--ink); box-shadow: var(--shadow-print); border-radius: var(--r-paper); display: grid; gap: var(--sp-3); }
.obj--palcal .t-small { color: var(--ink-2); }
.obj--palcal .paint-key { color: var(--ink); border-color: rgb(42 36 28 / .18); }
.palcal__rings { position: absolute; top: -8px; left: 14px; right: 14px; display: flex; justify-content: space-around; }
.palcal__rings i { width: 9px; height: 20px; border-radius: 5px; background: linear-gradient(90deg, #6f6a62, #d8d2c6, #6f6a62); }
.wall .obj--palcal::before { display: none; }

/* Món đồ đặt trong cột hẹp (tường hai cột, cặp món nhỏ trên bàn): xếp dọc cho chữ không bị bóp từng chữ một dòng. */
@container (max-width: 300px) {
  .book { grid-template-columns: 1fr; min-height: 0; }
  .book__page--l { padding: 14px 14px 2px; border-radius: 2px 2px 0 0; box-shadow: none; }
  .book__page--r { padding-top: 6px; border-radius: 0 0 2px 2px; box-shadow: none; }
  .book__mark { height: 44px; }
  .ticket-stub {
    grid-template-columns: 1fr; grid-template-rows: 1fr 46px;
    -webkit-mask: radial-gradient(circle 9px at 0 calc(100% - 46px), #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 9px at 100% calc(100% - 46px), #0000 97%, #000) right / 51% 100% no-repeat;
    mask: radial-gradient(circle 9px at 0 calc(100% - 46px), #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 9px at 100% calc(100% - 46px), #0000 97%, #000) right / 51% 100% no-repeat;
  }
  .ticket-stub__main { border-left: 0; border-top: 8px solid var(--c); padding: 12px 14px; }
  .ticket-stub__tear { border-left: 0; border-top: 2px dashed rgb(42 36 28 / .3); padding: 6px 10px; }
  .ticket-stub__pair { display: flex; justify-content: center; gap: .5em; }
  .ticket-stub__pair > span + span::before { content: "·"; margin-right: .5em; }
  .postcard { padding: 84px 16px 18px; min-height: 0; }
  .postcard::after, .postcard__lines { display: none; }
}
