/* ── 표지 템플릿 (cover-tpl.js, 접두사 cvt-) 2026-10-07 — 코덱스 사진 + 글자 배치 8가지. 1080×1080 ──
   나머지 6가지 중 classic 은 insta.css .igai-*, bottom·split·card·frame·band 는 insta.css .csai-* */
.cvt { position: relative; width: 100%; height: 100%; overflow: hidden; color: #1A1A1A; font-family: "Pretendard Variable", Pretendard, "Noto Sans KR", sans-serif; }
.cvt img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cvt h2 { margin: 0; font-weight: 900; letter-spacing: -0.035em; line-height: 1.1; }
.cvt p { margin: 0; }
.cvt .ft { position: absolute; left: 64px; right: 64px; bottom: 34px; display: flex; justify-content: space-between; font-size: 21px; font-weight: 800; }
.cvt .ft i { font-style: normal; opacity: .6; }

/* 폴라로이드 */
.cvt-polaroid { background: #F4EDE1; }
.cvt-polaroid .pol { position: absolute; left: 120px; top: 64px; width: 600px; padding: 26px 26px 0; background: #fff; transform: rotate(-3.5deg); box-shadow: 0 14px 34px rgba(60, 40, 20, .22); }
.cvt-polaroid .pol .ph { width: 548px; height: 430px; overflow: hidden; }
.cvt-polaroid .pol .cap { padding: 18px 4px 22px; font-size: 26px; font-weight: 700; color: #6B5B4B; text-align: center; }
.cvt-polaroid .tape { position: absolute; left: 50%; top: -22px; width: 190px; height: 46px; margin-left: -95px; background: rgba(236, 214, 160, .82); transform: rotate(3deg); }
.cvt-polaroid .txt { position: absolute; left: 64px; right: 64px; top: 680px; }
.cvt-polaroid h2 { font-size: 64px; color: #2E241B; }
.cvt-polaroid h2 em { font-style: normal; color: #C2452D; }
.cvt-polaroid .con { margin-top: 14px; font-size: 28px; font-weight: 700; color: #5A4A3A; }
.cvt-polaroid .tags { display: flex; gap: 16px; margin-top: 26px; }
.cvt-polaroid .tags span { background: #fff; border: 2px solid #2E241B; padding: 10px 18px; font-size: 20px; font-weight: 700; color: #5A4A3A; transform: rotate(-1deg); }
.cvt-polaroid .tags span:nth-child(2) { transform: rotate(1.5deg); }
.cvt-polaroid .tags b { display: block; font-size: 40px; font-weight: 900; color: #2E241B; line-height: 1.05; }
.cvt-polaroid .ft { color: #6B5B4B; }

/* 코르크 메모 */
.cvt-cork { background-color: #C49A6C; background-image: radial-gradient(rgba(90, 55, 25, .28) 1.4px, transparent 1.6px), radial-gradient(rgba(255, 235, 200, .18) 1.2px, transparent 1.4px); background-size: 14px 14px, 22px 22px; background-position: 0 0, 7px 9px; }
.cvt-cork .pin { position: absolute; width: 26px; height: 26px; border-radius: 50%; background: #D33A2C; box-shadow: 0 3px 4px rgba(0, 0, 0, .35); top: -10px; left: 50%; margin-left: -13px; z-index: 2; }
.cvt-cork .print { position: absolute; left: 470px; top: 60px; width: 560px; height: 480px; padding: 18px; background: #fff; transform: rotate(3deg); box-shadow: 0 10px 22px rgba(0, 0, 0, .28); }
.cvt-cork .idx { position: absolute; left: 50px; top: 120px; width: 470px; padding: 34px 34px 30px; background-color: #FFFDF6; transform: rotate(-2.5deg); box-shadow: 0 8px 18px rgba(0, 0, 0, .25); background-image: repeating-linear-gradient(transparent 0 46px, rgba(70, 120, 200, .18) 46px 48px); }
.cvt-cork .idx .tape { position: absolute; left: 30px; top: -18px; width: 140px; height: 38px; background: rgba(236, 214, 160, .85); transform: rotate(-6deg); }
.cvt-cork .idx .k { margin-bottom: 12px; font-size: 22px; font-weight: 800; color: #B23A2E; }
.cvt-cork h2 { font-size: 54px; color: #2C2016; }
.cvt-cork h2 em { font-style: normal; color: #B23A2E; }
.cvt-cork .idx .con { margin-top: 14px; font-size: 24px; font-weight: 700; color: #4A3A2A; }
.cvt-cork .notes { position: absolute; left: 60px; right: 60px; top: 640px; display: flex; gap: 30px; }
.cvt-cork .n { position: relative; flex: 1; height: 240px; padding: 46px 20px 20px; text-align: center; box-shadow: 0 8px 16px rgba(0, 0, 0, .22); }
.cvt-cork .n0 { background: #FFE680; transform: rotate(-3deg); }
.cvt-cork .n1 { background: #BDEBD5; transform: rotate(2deg); }
.cvt-cork .n2 { background: #FFC2D1; transform: rotate(-1.5deg); }
.cvt-cork .n b { display: block; font-size: 64px; font-weight: 900; color: #2C2016; line-height: 1.05; white-space: nowrap; }
.cvt-cork .n span:not(.pin) { display: block; margin-top: 10px; font-size: 24px; font-weight: 700; color: #4A3A2A; }
.cvt-cork .ft { color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, .5); }

/* 잡지 표지 */
.cvt-magazine img { position: absolute; inset: 0; }
.cvt-magazine .shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0, 0, 0, .62) 0%, rgba(0, 0, 0, .25) 46%, rgba(0, 0, 0, 0) 70%), linear-gradient(180deg, rgba(0, 0, 0, .45) 0%, rgba(0, 0, 0, 0) 26%); }
.cvt-magazine .mast { position: absolute; left: 48px; right: 48px; top: 30px; font-size: 150px; font-weight: 900; letter-spacing: -0.06em; line-height: 1; color: #fff; white-space: nowrap; overflow: hidden; }
.cvt-magazine .issue { position: absolute; right: 56px; top: 200px; background: #E4002B; color: #fff; padding: 8px 16px; font-size: 22px; font-weight: 800; }
.cvt-magazine .lines { position: absolute; left: 56px; top: 290px; width: 460px; color: #fff; }
.cvt-magazine .sub { margin-bottom: 24px; font-size: 40px; font-weight: 900; line-height: 1.15; }
.cvt-magazine .sub em { font-style: normal; color: #FFD23F; }
.cvt-magazine .cl { border-top: 3px solid #fff; padding: 12px 0 16px; }
.cvt-magazine .cl b { display: block; font-size: 66px; font-weight: 900; line-height: 1; white-space: nowrap; }
.cvt-magazine .cl span { display: block; margin-top: 4px; font-size: 22px; font-weight: 700; opacity: .9; }
.cvt-magazine .con { margin-top: 10px; font-size: 24px; font-weight: 700; line-height: 1.35; }
.cvt-magazine .bar { position: absolute; left: 56px; right: 56px; bottom: 36px; display: flex; justify-content: space-between; color: #fff; font-size: 21px; font-weight: 800; }
.cvt-magazine .bar i { font-style: normal; opacity: .6; }

/* 영화 포스터 */
.cvt-movie { background: #000; }
.cvt-movie img { position: absolute; inset: 0; filter: saturate(.85) contrast(1.05); }
.cvt-movie .shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, .25) 40%, rgba(0, 0, 0, .88) 68%, #000 100%); }
.cvt-movie .mid { position: absolute; left: 60px; right: 60px; bottom: 110px; text-align: center; color: #fff; }
.cvt-movie .tag { margin-bottom: 22px; font-size: 26px; font-weight: 600; font-style: italic; color: rgba(255, 255, 255, .85); }
.cvt-movie h2 { font-size: 88px; letter-spacing: -0.02em; line-height: 1.05; color: #fff; }
.cvt-movie h2 em { font-style: normal; color: #F5C451; }
.cvt-movie .k { margin-top: 18px; font-size: 22px; font-weight: 700; letter-spacing: .2em; color: rgba(255, 255, 255, .75); }
.cvt-movie .credits { margin-top: 26px; display: flex; justify-content: center; gap: 18px; font-size: 24px; color: rgba(255, 255, 255, .85); }
.cvt-movie .credits b { color: #fff; font-size: 30px; }
.cvt-movie .credits i { font-style: normal; opacity: .5; }
.cvt-movie .ft { color: rgba(255, 255, 255, .7); }

/* 신문 1면 */
.cvt-newspaper { background: #F3EFE6; color: #161616; }
.cvt-newspaper .mast { position: absolute; left: 56px; right: 56px; top: 36px; display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-top: 4px double #161616; border-bottom: 4px double #161616; font-size: 20px; font-weight: 700; }
.cvt-newspaper .mast b { font-family: "Noto Serif KR", "Batang", serif; font-size: 52px; font-weight: 900; letter-spacing: .04em; }
.cvt-newspaper h2 { position: absolute; left: 56px; right: 56px; top: 160px; font-family: "Noto Serif KR", "Batang", serif; font-size: 72px; line-height: 1.12; color: #161616; }
.cvt-newspaper h2 em { font-style: normal; color: #B3121F; }
.cvt-newspaper .body { position: absolute; left: 56px; right: 56px; top: 360px; bottom: 90px; display: grid; grid-template-columns: 1.55fr 1fr; gap: 28px; border-top: 2px solid #161616; padding-top: 24px; }
.cvt-newspaper figure { margin: 0; display: flex; flex-direction: column; min-height: 0; }
.cvt-newspaper figure img { flex: 1; min-height: 0; height: auto; filter: grayscale(.25) contrast(1.05); }
.cvt-newspaper figcaption { margin-top: 10px; font-size: 21px; color: #444; font-family: "Noto Serif KR", "Batang", serif; }
.cvt-newspaper .cols { display: flex; flex-direction: column; border-left: 1px solid #161616; padding-left: 26px; }
.cvt-newspaper .cols div { flex: 1; border-bottom: 1px solid #9A9488; padding: 8px 0; display: flex; flex-direction: column; justify-content: center; }
.cvt-newspaper .cols div:last-child { border-bottom: 0; }
.cvt-newspaper .cols b { font-family: "Noto Serif KR", "Batang", serif; font-size: 66px; font-weight: 900; color: #B3121F; line-height: 1; white-space: nowrap; }
.cvt-newspaper .cols span { margin-top: 6px; font-size: 22px; font-weight: 700; }
.cvt-newspaper .ft { border-top: 1px solid #161616; padding-top: 10px; bottom: 30px; color: #161616; }

/* 원형 사진 */
.cvt-circle { background: #FFD84D; }
.cvt-circle .ring { position: absolute; right: -70px; top: 70px; width: 600px; height: 600px; border-radius: 50%; overflow: hidden; border: 16px solid #fff; box-shadow: 0 0 0 6px #111; }
.cvt-circle .txt { position: absolute; left: 64px; top: 90px; width: 470px; }
.cvt-circle .k { margin-bottom: 22px; display: inline-block; background: #111; color: #FFD84D; padding: 8px 16px; font-size: 22px; font-weight: 800; }
.cvt-circle h2 { font-size: 84px; color: #111; }
.cvt-circle h2 em { font-style: normal; background: #fff; padding: 0 8px; }
.cvt-circle .con { margin-top: 22px; font-size: 27px; font-weight: 800; color: #2A2A2A; }
.cvt-circle .nums { position: absolute; left: 64px; right: 64px; top: 760px; display: flex; gap: 18px; }
.cvt-circle .nums div { flex: 1; background: #111; color: #fff; padding: 20px 22px; }
.cvt-circle .nums b { display: block; font-size: 58px; font-weight: 900; color: #FFD84D; line-height: 1; white-space: nowrap; }
.cvt-circle .nums span { display: block; margin-top: 8px; font-size: 21px; font-weight: 700; color: #fff; }
.cvt-circle .ft { color: #111; }

/* 듀오톤 포스터 */
.cvt-duotone { background: #1F3BD6; }
.cvt-duotone img { position: absolute; inset: 0; filter: grayscale(1) contrast(1.15) brightness(1.05); mix-blend-mode: multiply; }
.cvt-duotone .tint { position: absolute; inset: 0; background: rgba(31, 59, 214, .35); }
.cvt-duotone .k { position: absolute; left: 64px; top: 60px; color: #fff; font-size: 26px; font-weight: 800; border-bottom: 4px solid #C8F031; padding-bottom: 6px; }
.cvt-duotone h2 { position: absolute; left: 60px; right: 60px; top: 330px; font-size: 118px; line-height: 1.0; color: #fff; letter-spacing: -0.05em; }
.cvt-duotone h2 em { font-style: normal; color: #C8F031; }
.cvt-duotone .nums { position: absolute; left: 64px; right: 64px; bottom: 100px; display: flex; }
.cvt-duotone .nums div { flex: 1; color: #fff; border-left: 4px solid #C8F031; padding-left: 18px; }
.cvt-duotone .nums b { display: block; font-size: 60px; font-weight: 900; line-height: 1; white-space: nowrap; color: #fff; }
.cvt-duotone .nums span { display: block; margin-top: 6px; font-size: 22px; font-weight: 700; opacity: .9; }
.cvt-duotone .ft { color: #fff; }

/* 입장권 */
.cvt-ticket { background: #23304D; }
.cvt-ticket .tk { position: absolute; left: 50px; right: 50px; top: 170px; height: 640px; display: flex; background: #FFF6E5; border-radius: 26px; box-shadow: 0 18px 40px rgba(0, 0, 0, .35); overflow: hidden; }
.cvt-ticket .stub { width: 330px; flex: 0 0 330px; position: relative; border-right: 4px dashed #C9B48F; }
.cvt-ticket .stub img { height: 100%; }
.cvt-ticket .tk::before, .cvt-ticket .tk::after { content: ""; position: absolute; left: 312px; width: 40px; height: 40px; border-radius: 50%; background: #23304D; z-index: 2; }
.cvt-ticket .tk::before { top: -20px; }
.cvt-ticket .tk::after { bottom: -20px; }
.cvt-ticket .main { flex: 1; padding: 50px 46px 40px; display: flex; flex-direction: column; }
.cvt-ticket .k { margin-bottom: 18px; font-size: 21px; font-weight: 800; color: #B5361F; letter-spacing: .04em; }
.cvt-ticket h2 { font-size: 58px; color: #23304D; }
.cvt-ticket h2 em { font-style: normal; color: #B5361F; }
.cvt-ticket .con { margin-top: 16px; font-size: 24px; font-weight: 700; color: #4A4A4A; }
.cvt-ticket .fields { margin-top: auto; display: flex; border-top: 2px solid #23304D; padding-top: 18px; }
.cvt-ticket .fields div { flex: 1; }
.cvt-ticket .fields span { display: block; font-size: 18px; font-weight: 700; color: #7A6A52; }
.cvt-ticket .fields b { display: block; margin-top: 4px; font-size: 44px; font-weight: 900; color: #23304D; line-height: 1.05; white-space: nowrap; }
.cvt-ticket .ft { color: rgba(255, 255, 255, .8); }
