/* Halaman app: tiap app punya kertasnya sendiri dari kotak alat tulis yang sama. */

.lapis-app {
  position: absolute;
  inset: 0;
  z-index: 20;
  pointer-events: none;
}
.lapis-app.terbuka {
  pointer-events: auto;
}
.layar-app {
  --latar: var(--kertas);
  --teks: var(--tinta);
  --teks-2: var(--tinta-2);
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--latar);
  color: var(--teks);
}
.layar-app[hidden] {
  display: none;
}
.layar-app::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--serat);
  background-size: 180px 180px;
  opacity: var(--butir, 0.07);
  pointer-events: none;
}

[data-kertas='mawar'] {
  --latar: var(--mawar);
  --teks: var(--tinta);
  --teks-2: #64304d;
  --butir: 0.06;
}
[data-kertas='persik'] {
  --latar: var(--persik);
  --teks: var(--tinta);
  --teks-2: #683a33;
  --butir: 0.09;
}
[data-kertas='lila'] {
  --latar: var(--lila);
  --teks: var(--tinta);
  --teks-2: #533c6b;
  --butir: 0.06;
}
[data-kertas='beri'] {
  --latar: var(--beri);
  --teks: #fff;
  --teks-2: rgb(255 255 255 / 0.74);
  --cincin: #fff;
  --butir: 0.28;
}
[data-kertas='buku'] {
  --latar: #fff2f7;
  --butir: 0.03;
}
[data-kertas='buku'] .gulir {
  background-image:
    linear-gradient(90deg, transparent 34px, rgb(217 71 138 / 0.42) 34px 36px, transparent 36px),
    repeating-linear-gradient(180deg, transparent 0 31px, #f2cfdd 31px 32px);
  background-attachment: local;
}
[data-kertas='milimeter'] {
  --latar: #fff6fa;
  --butir: 0.03;
}
[data-kertas='milimeter'] .gulir {
  background-image:
    linear-gradient(#f3d0de 1px, transparent 1px),
    linear-gradient(90deg, #f3d0de 1px, transparent 1px),
    linear-gradient(#fae4ed 1px, transparent 1px),
    linear-gradient(90deg, #fae4ed 1px, transparent 1px);
  background-size: 40px 40px, 40px 40px, 8px 8px, 8px 8px;
  background-attachment: local;
}

.kepala {
  position: relative;
  z-index: 3;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px;
  padding: calc(var(--aman-atas) + 6px) 8px 6px 6px;
}
.kepala-judul {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.kepala-stiker .stiker {
  width: 44px;
  height: 44px;
  rotate: -6deg;
}
.kepala .label-stiker {
  font-size: 23px;
}
.kepala-aksi {
  display: flex;
  align-items: center;
}
.gulir {
  position: relative;
  z-index: 1;
  flex: 1;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 6px 16px calc(var(--aman-bawah) + 116px);
  scrollbar-width: thin;
}
.tombol-melayang {
  position: absolute;
  right: 18px;
  bottom: calc(var(--aman-bawah) + 22px);
  z-index: 4;
  width: 62px;
  height: 62px;
  border: 0;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--tinta);
  color: #fff;
  box-shadow: 0 0 0 4px #fff, 0 12px 20px -8px rgb(59 34 54 / 0.6);
  rotate: -6deg;
}
.tombol-melayang .ikon {
  width: 28px;
  height: 28px;
  stroke-width: 2.4;
}
.titik-baru {
  position: absolute;
  z-index: 3;
  top: 8px;
  right: 8px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: var(--alarm);
  box-shadow: 0 0 0 2.5px #fff;
}
.teks-kecil {
  font-size: 13.5px;
  color: var(--teks-2);
}
/* tab map: sakelar pil di atas kertas (Harapan); versi folder = tab aktif dan isinya satu lembar putih
   dengan lengkung cekung di kaki tab (Galeri) */
.tab-map {
  display: inline-flex;
  gap: 2px;
  margin: 8px 0 0;
  padding: 4px;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.45);
}
.tab-map button {
  position: relative;
  min-height: 40px;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--teks);
  font: 650 15px/1 var(--font-ui);
}
.tab-map button[aria-selected='true'] {
  background: #fff;
  color: var(--tinta);
  box-shadow: 0 1px 3px rgb(59 34 54 / 0.18);
}
.tab-map-folder {
  display: flex;
  gap: 4px;
  padding: 0;
  border-radius: 0;
  background: none;
}
.tab-map-folder button {
  min-height: 44px;
  border-radius: 14px 14px 0 0;
  background: rgb(255 255 255 / 0.42);
}
.tab-map-folder button[aria-selected='true'] {
  box-shadow: none;
}
.tab-map-folder button[aria-selected='true']::before,
.tab-map-folder button[aria-selected='true']::after {
  content: '';
  position: absolute;
  bottom: 0;
  width: 14px;
  height: 14px;
  pointer-events: none;
}
.tab-map-folder button[aria-selected='true']::before {
  left: -14px;
  background: radial-gradient(circle at 0 0, transparent 13.5px, #fff 14px);
}
.tab-map-folder button[aria-selected='true']::after {
  right: -14px;
  background: radial-gradient(circle at 100% 0, transparent 13.5px, #fff 14px);
}
.tab-map-folder button[aria-selected='true']:first-child::before {
  display: none;
}
.panel-map {
  background: #fff;
  color: var(--tinta);
  border-radius: 0 16px 16px 16px;
  padding: 12px;
}
.tab-map:has(button:not(:first-child)[aria-selected='true']) ~ .panel-map {
  border-top-left-radius: 16px;
}
.saring {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.panel-map > .saring {
  margin: 0 0 12px;
}
.panel-map .chip:not([aria-pressed='true']) {
  background: var(--pink-kapas);
  box-shadow: none;
}
/* foto tetap rapat sampai tepi lembar, sudut bawah ikut lengkung lembar */
.panel-map > .grid-foto {
  margin: 0 -12px -12px;
  border-radius: 0 0 16px 16px;
  overflow: hidden;
}
.panel-map .grid-foto-kosong {
  padding: 4px 12px 16px;
}

/* ---------- Galeri ---------- */
.label-bulan {
  margin: 18px 0 16px 2px;
  font: 700 23px/1 var(--font-tangan);
  color: var(--teks);
}
.rak-album {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px 16px;
}
.album-kartu {
  padding-bottom: 50px;
}
.album-kartu .pita {
  top: -9px;
  left: 12px;
  width: 56px;
  rotate: -8deg;
}
.album-kartu .pita + .pita {
  left: auto;
  right: 10px;
  rotate: 9deg;
}
.album-kartu .instax-tulisan {
  bottom: 22px;
}
.album-meta {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 7px;
  font: 12.5px/1.2 var(--font-ui);
  color: var(--tinta-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.album-kartu .titik-label {
  position: absolute;
  top: -10px;
  right: -8px;
  z-index: 3;
}
.album-info {
  display: grid;
  gap: 10px;
  margin: 2px 0 6px;
}
.album-baris-info {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  font: 600 14px/1.2 var(--font-ui);
  color: var(--teks);
}
.album-baris-info .ikon {
  width: 18px;
  height: 18px;
}
.cap-tanggal {
  color: var(--tinta);
}
.kontributor {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  font: 600 14px/1.2 var(--font-ui);
}
.grid-foto {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
  margin: 0 -13px;
}
.sel-foto {
  position: relative;
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  background: rgb(255 255 255 / 0.14);
}
.sel-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.lingkaran-spidol {
  position: absolute;
  inset: 5%;
  z-index: 2;
  width: 90%;
  height: 90%;
  overflow: visible;
  pointer-events: none;
}
.grid-foto-kosong {
  grid-column: 1 / -1;
}
.pesan-album {
  padding: 14px 14px 10px;
}
.panel-unggah {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: calc(var(--aman-bawah) + 96px);
  z-index: 5;
  display: grid;
  gap: 8px;
  padding: 12px 14px;
  border-radius: 14px;
  background: #fff;
  color: var(--tinta);
  box-shadow: 0 14px 30px -10px rgb(0 0 0 / 0.55);
}
.panel-unggah-judul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  font: 650 15px/1.2 var(--font-ui);
}
.batang {
  height: 6px;
  border-radius: 3px;
  background: var(--abu-kertas);
  overflow: hidden;
}
.batang > span {
  display: block;
  height: 100%;
  background: var(--aksen);
  transform-origin: left center;
  transform: scaleX(var(--p, 0));
  transition: transform 0.25s;
}
.panel-unggah .pesan-galat {
  font-size: 13.5px;
}
.panel-unggah .tombol {
  min-height: 40px;
  font-size: 14.5px;
}

/* ---------- penampil foto ---------- */
/* penampil = karton hitam (kertas app Lagu), foto dicetak sebagai instax besar */
.penampil {
  position: fixed;
  inset: 0;
  z-index: 55;
  display: flex;
  flex-direction: column;
  background: var(--beri) var(--serat-halus);
  background-size: 180px 180px;
  color: #fff;
  --cincin: #fff;
  animation: penampil-masuk 0.3s var(--ease-keluar);
}
.instax-besar {
  position: relative;
  margin: 0;
  padding: 10px 10px 54px;
  background: #fff;
  color: var(--tinta);
  box-shadow: 0 2px 4px rgb(0 0 0 / 0.45), 0 22px 34px -16px rgb(0 0 0 / 0.75);
  rotate: var(--miring, 0deg);
}
.instax-besar img {
  display: block;
  max-width: calc(100vw - 48px);
  max-height: calc(100dvh - 330px);
  object-fit: contain;
  background: var(--abu-kertas);
}
@media (min-width: 620px) {
  .instax-besar img {
    max-width: min(80vw, 900px);
  }
}
.instax-besar figcaption {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  font: 700 18px/1.1 var(--font-tangan);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.perbesar .instax-besar {
  padding: 0;
  background: none;
  box-shadow: none;
  rotate: 0deg;
}
.perbesar .instax-besar figcaption {
  display: none;
}
.penampil.pergi {
  opacity: 0;
  transition: opacity 0.2s;
}
@keyframes penampil-masuk {
  from {
    opacity: 0;
  }
}
.penampil-atas {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(var(--aman-atas) + 4px) 6px 4px;
}
.penampil-hitung {
  font: 650 14px/1 var(--font-ui);
  color: rgb(255 255 255 / 0.75);
  font-variant-numeric: tabular-nums;
}
.penampil-rel {
  flex: 1;
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.penampil-rel::-webkit-scrollbar {
  display: none;
}
.penampil-slide {
  flex: 0 0 100%;
  scroll-snap-align: center;
  scroll-snap-stop: always;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: 4px;
}
.penampil-slide img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.penampil-slide.perbesar {
  overflow: auto;
  place-items: start;
}
.penampil-slide.perbesar img {
  max-width: none;
  max-height: none;
  width: 240vw;
}
.penampil-bawah {
  display: grid;
  gap: 10px;
  padding: 10px 16px calc(var(--aman-bawah) + 14px);
}
.penampil-info {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 10px;
  font: 13.5px/1.3 var(--font-ui);
  color: rgb(255 255 255 / 0.82);
}
.penampil-info .tanda-orang {
  color: #fff;
}
.penampil-keterangan {
  font: 700 22px/1.15 var(--font-tangan);
  overflow-wrap: anywhere;
}
.penampil-keterangan.kosong-ket {
  color: rgb(255 255 255 / 0.55);
}
.penampil-aksi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.penampil-aksi > div:first-child {
  flex: 1;
  min-width: 0;
}
.penampil .reaksi {
  flex-wrap: nowrap;
  overflow-x: auto;
  scrollbar-width: none;
  gap: 4px;
}
.penampil .reaksi-tombol {
  flex: none;
  min-width: 40px;
  padding: 0 7px;
}
.penampil .tombol-pesan {
  flex: none;
}
.penampil .reaksi-tombol {
  background: rgb(255 255 255 / 0.12);
  color: #fff;
}
.penampil .reaksi-tombol.ada {
  background: rgb(255 255 255 / 0.94);
  border-color: transparent;
}
.penampil .reaksi-tombol.pilihan {
  border-color: var(--mawar);
}
.tombol-pesan {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 14px;
  border: 0;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.14);
  color: inherit;
  font: 650 14px/1 var(--font-ui);
}

/* ---------- Jurnal ---------- */
.tulis-jurnal {
  position: relative;
  margin: 12px 2px 6px;
  padding: 20px 14px 12px;
  background: #fff;
  box-shadow: var(--bayang-kertas);
  rotate: -0.6deg;
}
.tulis-jurnal > .pita {
  top: -10px;
  left: 18px;
  rotate: -6deg;
  width: 62px;
}
.tulis-jurnal textarea {
  width: 100%;
  min-height: 62px;
  border: 0;
  outline: none;
  resize: none;
  background: transparent;
  font: 700 22px/1.2 var(--font-tangan);
  color: var(--tinta);
}
.pilih-suasana {
  display: flex;
  gap: 2px;
  overflow-x: auto;
  scrollbar-width: none;
  margin: 2px -6px 0;
}
.suasana-tombol {
  position: relative;
  flex: none;
  width: 42px;
  height: 42px;
  border: 0;
  background: none;
  font-size: 23px;
  line-height: 1;
}
.suasana-tombol[aria-pressed='true']::after {
  content: '';
  position: absolute;
  inset: 1px;
  border: 2.5px solid var(--tinta);
  border-radius: 52% 46% 55% 44%;
  rotate: -10deg;
}
.tulis-bawah {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 8px;
}
.tulis-bawah .tombol {
  min-height: 44px;
}
.pratinjau-foto {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.pratinjau-foto .pratinjau {
  position: relative;
  width: 58px;
  height: 58px;
}
.pratinjau img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 4px;
}
.pratinjau button {
  position: absolute;
  top: -8px;
  right: -8px;
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: 50%;
  background: var(--tinta);
  color: #fff;
  display: grid;
  place-items: center;
}
.pratinjau button .ikon {
  width: 14px;
  height: 14px;
}
.hitung-karakter {
  font: 12.5px var(--font-ui);
  color: var(--tinta-3);
  font-variant-numeric: tabular-nums;
}
.rel {
  position: relative;
  padding: 4px 0 12px;
}
.rel::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 2px;
  margin-left: -1px;
  background: repeating-linear-gradient(180deg, var(--teks) 0 7px, transparent 7px 13px);
  opacity: 0.3;
}
.hari {
  position: relative;
  z-index: 1;
  display: block;
  width: max-content;
  margin: 24px auto 16px;
  padding: 6px 13px;
  border-radius: 999px;
  background: var(--tinta);
  color: #fff;
  font: 650 13px/1.2 var(--font-ui);
}
.catatan {
  position: relative;
  width: 86%;
  margin: 0 0 20px;
  padding: 18px 14px 10px;
  background: #fff;
  color: var(--tinta);
  box-shadow: var(--bayang-kertas);
  rotate: var(--miring, 0deg);
}
.catatan.milikku {
  margin-left: auto;
}
.catatan > .pita {
  top: -10px;
  left: 14px;
  width: 58px;
  rotate: -5deg;
}
.catatan.milikku > .pita {
  left: auto;
  right: 14px;
  rotate: 6deg;
}
.catatan-kepala {
  display: flex;
  align-items: center;
  gap: 8px;
  font: 650 13px/1.2 var(--font-ui);
  color: var(--tinta-3);
}
.catatan-kepala .tanda-orang {
  color: var(--pita-tinta);
}
.catatan-kepala .tombol-ikon {
  margin: -10px -8px -10px auto;
  color: var(--tinta-3);
}
.catatan-isi {
  margin-top: 4px;
  font: 700 21px/1.22 var(--font-tangan);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.catatan-foto {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin-top: 10px;
}
.catatan-foto.satu {
  grid-template-columns: 1fr;
}
.catatan-foto button {
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  background: var(--abu-kertas);
}
.catatan-foto.satu button {
  aspect-ratio: 4 / 3;
}
.catatan-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.catatan-aksi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 8px;
}
.catatan .reaksi-tombol {
  height: 36px;
  min-width: 40px;
  font-size: 16px;
}
.catatan .reaksi {
  gap: 4px;
}
.reaksi-ringkas {
  display: flex;
  gap: 4px;
  align-items: center;
}
.tombol-balas {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 10px;
  border: 0;
  border-radius: 999px;
  background: #f8eef2;
  color: var(--tinta);
  font: 650 13.5px/1 var(--font-ui);
  white-space: nowrap;
}
.tombol-balas .ikon {
  width: 18px;
  height: 18px;
}
.diubah {
  font-style: italic;
}
.muat-lagi {
  display: flex;
  justify-content: center;
  padding: 10px 0 0;
}

/* ---------- Kenangan ---------- */
.alat-kenangan {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin: 4px 0 8px;
}
.tiket-bungkus {
  position: relative;
  width: 86%;
  margin: 0 0 24px;
  filter: drop-shadow(0 1px 1px rgb(59 34 54 / 0.25)) drop-shadow(0 9px 12px rgb(59 34 54 / 0.28));
  rotate: var(--miring, 0deg);
}
.tiket-bungkus.kanan {
  margin-left: auto;
}
.tiket-bungkus > .pita {
  top: -10px;
  left: 18px;
  width: 58px;
  rotate: -6deg;
}
.tiket-bungkus.kanan > .pita {
  left: auto;
  right: 18px;
  rotate: 7deg;
}
.tiket {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 88px;
  min-height: 124px;
  background: #fff;
  color: var(--tinta);
  text-decoration: none;
  -webkit-mask: radial-gradient(circle 10px at 0 50%, transparent 97%, #000) left / 51% 100% no-repeat,
    radial-gradient(circle 10px at 100% 50%, transparent 97%, #000) right / 51% 100% no-repeat;
  mask: radial-gradient(circle 10px at 0 50%, transparent 97%, #000) left / 51% 100% no-repeat,
    radial-gradient(circle 10px at 100% 50%, transparent 97%, #000) right / 51% 100% no-repeat;
}
.tiket-utama {
  display: grid;
  align-content: start;
  gap: 5px;
  padding: 13px 10px 12px 20px;
  min-width: 0;
}
.tiket-kode {
  font: 650 12.5px/1 var(--font-ui);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tinta);
}
.tiket-judul {
  font: 20px/1.05 var(--font-stiker);
  overflow-wrap: anywhere;
}
.tiket-jenis,
.tiket-versi {
  display: flex;
  align-items: center;
  gap: 6px;
  font: 600 13px/1.2 var(--font-ui);
  color: var(--tinta-2);
}
.tiket-jenis .ikon {
  width: 17px;
  height: 17px;
}
.tiket-versi {
  color: var(--tinta-3);
  font-weight: 500;
}
.tiket-sobekan {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  padding: 10px 12px 10px 10px;
  border-left: 2px dashed var(--garis);
}
.tiket-sobekan .foto-mini {
  width: 64px;
  height: 64px;
  padding: 3px 3px 10px;
  background: #fff;
  box-shadow: 0 1px 3px rgb(59 34 54 / 0.35);
  rotate: 4deg;
}
.foto-mini img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.tiket-sobekan .ikon {
  width: 34px;
  height: 34px;
  color: var(--tinta-2);
}
.titik-album {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  width: max-content;
  max-width: 82%;
  margin: 0 auto 24px;
  padding: 5px 14px 5px 5px;
  border-radius: 999px;
  background: rgb(255 255 255 / 0.88);
  color: var(--tinta);
  font: 600 13.5px/1.2 var(--font-ui);
  text-decoration: none;
  box-shadow: 0 1px 2px rgb(59 34 54 / 0.2);
}
.titik-album .ikon-bungkus {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--aksen);
  color: #fff;
}
.titik-album .ikon {
  width: 17px;
  height: 17px;
}
.kenangan-detail {
  display: grid;
  gap: 16px;
  padding-top: 6px;
}
.kenangan-sampul {
  width: min(78%, 300px);
  justify-self: center;
  rotate: -2deg;
}
.kenangan-sampul-kosong {
  justify-self: center;
}
.kenangan-judul {
  font: 30px/1.05 var(--font-stiker);
  text-align: center;
  text-wrap: balance;
  overflow-wrap: anywhere;
}
.kenangan-meta {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
  font: 600 14px/1.2 var(--font-ui);
}
.kenangan-meta .cap {
  color: var(--tinta);
}
.album-tautan {
  display: grid;
  gap: 8px;
  padding: 12px;
  border-radius: 14px;
  background: rgb(255 255 255 / 0.82);
  color: var(--tinta);
  text-decoration: none;
}
.album-tautan-judul {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font: 650 14.5px/1.2 var(--font-ui);
}
.album-tautan-foto {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 3px;
}
.album-tautan-foto img {
  aspect-ratio: 1;
  width: 100%;
  object-fit: cover;
  border-radius: 3px;
}
.versi {
  position: relative;
  padding: 22px 16px 14px;
  background: #fff;
  color: var(--tinta);
  box-shadow: var(--bayang-kertas);
  rotate: var(--miring, 0deg);
}
.versi > .pita {
  top: -10px;
  left: 16px;
  width: 60px;
  rotate: -5deg;
}
.versi-label {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  font: 650 13.5px/1.2 var(--font-ui);
  color: var(--tinta-3);
}
.versi-isi {
  margin-top: 6px;
  font: 700 21px/1.24 var(--font-tangan);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.versi textarea {
  width: 100%;
  margin-top: 6px;
  min-height: 110px;
  border: 0;
  outline: none;
  resize: none;
  background: transparent;
  font: 700 21px/1.24 var(--font-tangan);
  color: var(--tinta);
  background-image: repeating-linear-gradient(180deg, transparent 0 25px, #f3dbe5 25px 26px);
  background-attachment: local;
}
.versi .baris-tombol {
  margin-top: 4px;
}
/* versi pasangan = kertas terlipat: separuh atas memperlihatkan punggung kertas, tinta tembus samar & terbalik */
.lipatan {
  position: relative;
  height: 112px;
  margin: 10px -6px 0;
  perspective: 700px;
}
.lipatan-atas,
.lipatan-bawah {
  position: absolute;
  left: 0;
  right: 0;
  overflow: hidden;
}
.lipatan-atas {
  top: 0;
  height: 50%;
  background: #fbf3f6;
  transform-origin: bottom center;
  transform: rotateX(16deg);
  box-shadow: 0 7px 9px -6px rgb(59 34 54 / 0.38);
  z-index: 1;
}
.lipatan-atas::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--serat);
  background-size: 180px 180px;
  opacity: 0.1;
}
.lipatan-bawah {
  bottom: 0;
  height: 50%;
  background: linear-gradient(180deg, #ead6de, #f9eff3 40%, #fbfaf8);
}
.kartu-indeks > .titik-baru {
  right: 48px;
  top: 16px;
}
.tembus {
  position: absolute;
  inset: 8px 14px;
  width: calc(100% - 28px);
  height: calc(100% - 16px);
  scale: -1 1;
  opacity: 0.2;
  filter: blur(0.5px);
}
.versi-kunci {
  display: grid;
  justify-items: center;
  gap: 6px;
  margin-top: 8px;
  text-align: center;
  font: 700 20px/1.2 var(--font-tangan);
}
.versi-kunci .ikon {
  width: 26px;
  height: 26px;
}
.versi-belum {
  font: 700 19px/1.25 var(--font-tangan);
  color: var(--tinta-3);
  margin-top: 6px;
}
.membuka {
  animation: buka-lipatan 0.7s var(--ease-keluar);
  transform-origin: top center;
}
@keyframes buka-lipatan {
  from {
    transform: perspective(700px) rotateX(-75deg);
    opacity: 0.3;
  }
}
.blok-obrolan {
  padding: 14px;
  border-radius: 14px;
  background: #fff;
  color: var(--tinta);
}
.blok-obrolan h2 {
  font: 19px/1.1 var(--font-stiker);
  margin-bottom: 4px;
}

/* ---------- Harapan ---------- */
/* kartu indeks: kepala putih bersih di atas garis merah (selalu tepat di bawah baris judul terakhir),
   garis biru hanya di badan kartu */
.kartu-indeks {
  position: relative;
  margin: 0 2px 22px;
  padding: 0 14px 12px;
  background-color: #fff;
  background-image: repeating-linear-gradient(180deg, transparent 0 25px, #dcd7f3 25px 26px);
  color: var(--tinta);
  box-shadow: var(--bayang-kertas);
  rotate: var(--miring, 0deg);
}
/* stiker inisial penulis (C biru / K merah / foto) ditempel di sudut kartu; "Aku juga" = stiker kedua */
.cap-orang-grup {
  position: absolute;
  z-index: 3;
  top: -15px;
  left: 10px;
  display: flex;
}
.cap-orang {
  rotate: -7deg;
}
.cap-orang + .cap-orang {
  margin-left: -3px;
  rotate: 6deg;
}
.harapan-lainnya {
  position: absolute;
  z-index: 2;
  top: 4px;
  right: 2px;
  color: var(--tinta-3);
}
.harapan-isi {
  margin: 0 -14px 4px;
  padding: 28px 50px 8px 14px;
  background: #fff;
  border-bottom: 2px solid rgb(217 71 138 / 0.5);
  font: 650 18px/1.44 var(--font-ui);
  overflow-wrap: anywhere;
  text-wrap: pretty;
}
.harapan-untuk {
  margin-top: 6px;
  font: 700 18px/1.2 var(--font-tangan);
  color: var(--aksen-tua);
}
.kategori-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 32px;
  padding: 0 10px 0 8px;
  border-radius: 999px;
  border: 1.5px solid var(--garis);
  font: 650 13px/1 var(--font-ui);
  color: var(--tinta-2);
}
.kategori-chip .ikon {
  width: 17px;
  height: 17px;
}
.harapan-aksi {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 10px;
  margin-top: 10px;
}
.tombol-ikut {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 14px;
  border: 1.5px solid var(--tinta);
  border-radius: 999px;
  background: #fff;
  color: var(--tinta);
  font: 650 14px/1 var(--font-ui);
}
.tombol-ikut[aria-pressed='true'] {
  background: var(--tinta);
  color: #fff;
}
.tombol-ikut .ikon {
  width: 18px;
  height: 18px;
}
.sama-sama {
  font: 700 18px/1 var(--font-tangan);
}
.cap-terwujud {
  position: absolute;
  right: 14px;
  bottom: 58px;
  color: var(--aksen-tua);
  rotate: -9deg;
}
.harapan-catatan {
  margin-top: 6px;
  font: 700 18px/1.25 var(--font-tangan);
  color: var(--tinta-2);
}

.serpihan {
  position: absolute;
  z-index: 30;
  top: 45%;
  left: 50%;
  width: 11px;
  height: 15px;
  border-radius: 2px;
  pointer-events: none;
  box-shadow: 0 1px 2px rgb(59 34 54 / 0.3);
}

/* ---------- Lagu ---------- */
.tombol-pesan[aria-pressed='true'] {
  background: #fff;
  color: var(--tinta);
}
.lagu-sekarang {
  display: grid;
  justify-items: center;
  gap: 10px;
  padding: 6px 0 14px;
  text-align: center;
}
.lagu-sampul-besar {
  width: min(62vw, 240px);
  aspect-ratio: 1;
  padding: 8px;
  background: #fff;
  box-shadow: 0 2px 4px rgb(0 0 0 / 0.4), 0 20px 30px -14px rgb(0 0 0 / 0.7);
  rotate: -2deg;
  display: grid;
  place-items: center;
}
.lagu-sampul-besar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.lagu-sampul-besar .kaset {
  width: 88%;
}
.lagu-judul {
  margin-top: 8px;
  font: 700 30px/1.05 var(--font-tangan);
  text-wrap: balance;
  overflow-wrap: anywhere;
}
.lagu-artis {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 4px 10px;
  color: var(--teks-2);
  font-size: 14.5px;
}
.lagu-artis .tanda-orang {
  color: #fff;
}
.lagu-catatan {
  max-width: 30ch;
  font: 700 20px/1.2 var(--font-tangan);
  color: var(--mentega);
}
.lagu-waktu {
  width: 100%;
  display: grid;
  gap: 2px;
}
.lagu-waktu-angka {
  display: flex;
  justify-content: space-between;
  font: 12.5px/1 var(--font-ui);
  color: var(--teks-2);
  font-variant-numeric: tabular-nums;
}
.geser {
  --p: 0%;
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 30px;
  background: transparent;
  margin: 0;
}
.geser::-webkit-slider-runnable-track {
  height: 4px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--mawar) var(--p), rgb(255 255 255 / 0.22) var(--p));
}
.geser::-moz-range-track {
  height: 4px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--mawar) var(--p), rgb(255 255 255 / 0.22) var(--p));
}
.geser::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  margin-top: -7px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.5);
}
.geser::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border: 0;
  border-radius: 50%;
  background: #fff;
}
.lagu-kontrol {
  display: flex;
  align-items: center;
  gap: 22px;
}
.lagu-kontrol .tombol-ikon {
  width: 52px;
  height: 52px;
}
.lagu-kontrol .tombol-ikon .ikon {
  width: 28px;
  height: 28px;
}
.lagu-kontrol .tombol-putar {
  width: 74px;
  height: 74px;
  background: var(--mawar);
  color: var(--tinta);
  box-shadow: 0 0 0 4px #fff, 0 12px 22px -10px rgb(0 0 0 / 0.8);
}
.lagu-kontrol .tombol-putar .ikon {
  width: 34px;
  height: 34px;
}
.sisi {
  margin: 20px 0 8px;
  font: 19px/1 var(--font-stiker);
  letter-spacing: 0.04em;
  color: var(--mawar);
}
.daftar-trek {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 2px;
}
.trek {
  position: relative;
  display: grid;
  grid-template-columns: 24px 46px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 6px;
  border-radius: 12px;
}
.trek.sekarang {
  background: rgb(255 255 255 / 0.09);
}
.trek-putar {
  position: absolute;
  inset: 0;
  border: 0;
  background: none;
  border-radius: 12px;
}
.trek-no {
  font: 15px/1 var(--font-stiker);
  color: var(--teks-2);
  text-align: center;
}
.trek.sekarang .trek-no {
  color: var(--mawar);
}
.trek-sampul {
  width: 46px;
  height: 46px;
  background: #fff;
  padding: 2px;
  display: grid;
  place-items: center;
}
.trek-sampul img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.trek-sampul .kaset {
  width: 40px;
}
.trek-teks {
  min-width: 0;
  pointer-events: none;
}
.trek-judul {
  display: block;
  font: 650 16px/1.25 var(--font-ui);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.trek-sub {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--teks-2);
  white-space: nowrap;
  overflow: hidden;
}
.trek-kanan {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 2px;
  font: 13px/1 var(--font-ui);
  color: var(--teks-2);
  font-variant-numeric: tabular-nums;
}
.trek .titik-baru {
  position: static;
  display: inline-block;
  width: 10px;
  height: 10px;
  flex: none;
}
.panel-lagu {
  display: grid;
  gap: 8px;
}

/* ---------- Pengaturan ---------- */
.kartu-atur {
  display: grid;
  gap: 14px;
  margin: 10px 0 18px;
  padding: 16px;
  border-radius: 16px;
  background: #fff;
  box-shadow: var(--bayang-kertas);
}
.kartu-atur h2 {
  font: 20px/1.1 var(--font-stiker);
}
.profil-baris {
  display: flex;
  align-items: center;
  gap: 14px;
}
.profil-baris .bidang {
  flex: 1;
}
.avatar-ganti {
  position: relative;
  flex: none;
  padding: 0;
  border: 0;
  background: none;
  border-radius: 50%;
}
.avatar-kamera {
  position: absolute;
  right: -4px;
  bottom: -4px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--tinta);
  color: #fff;
  box-shadow: 0 0 0 2.5px #fff;
}
.avatar-kamera .ikon {
  width: 16px;
  height: 16px;
}
.pilih-warna {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.warna-sel {
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: var(--pita);
  box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px rgb(59 34 54 / 0.14);
}
.warna-sel[aria-pressed='true'] {
  box-shadow: 0 0 0 3px #fff, 0 0 0 5.5px var(--tinta);
}
.warna-sel:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}
.pilih-motif {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.motif-sel {
  position: relative;
  height: 52px;
  border: 1.5px solid var(--garis);
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
}
.motif-sel .pita {
  top: 14px;
  left: 12%;
  width: 76%;
  height: 22px;
}
.motif-sel[aria-pressed='true'] {
  border-color: var(--tinta);
  border-width: 2.5px;
}
.contoh-pita {
  display: flex;
  align-items: center;
  gap: 10px;
  font: 600 14px/1.2 var(--font-ui);
  color: var(--tinta-2);
}
.contoh-pita .pita {
  position: relative;
  width: 90px;
}
.wallpaper-baris {
  display: flex;
  gap: 14px;
  align-items: center;
}
.wallpaper-pratinjau {
  width: 84px;
  aspect-ratio: 9 / 16;
  border-radius: 12px;
  flex: none;
  background-size: cover;
  background-position: center;
  box-shadow: 0 0 0 3px #fff, 0 6px 14px -6px rgb(59 34 54 / 0.5);
}
.tombol-tumpuk {
  display: grid;
  gap: 8px;
  flex: 1;
}
.tombol-tumpuk .tombol {
  min-height: 42px;
  font-size: 14.5px;
  justify-content: flex-start;
}
.langkah-pasang {
  margin: 0;
  padding-left: 20px;
  display: grid;
  gap: 6px;
  color: var(--tinta-2);
}
.pemakaian {
  font: 650 15px/1.4 var(--font-ui);
}
