@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap");
:root {
  --bg: #f5fbfc;
  --surface: #fff;
  --surface2: #edf8f7;
  --text: #0b2430;
  --muted: #627780;
  --line: #d7e8e8;
  --blue: #0284c7;
  --green: #16a34a;
  --grad: linear-gradient(135deg, #0284c7, #16a34a);
  --shadow: 0 18px 50px rgba(3, 44, 55, 0.1);
}
[data-theme="dark"] {
  --bg: #041018;
  --surface: #091b25;
  --surface2: #0d2631;
  --text: #edfdfd;
  --muted: #9db1b8;
  --line: #173642;
  --shadow: 0 18px 55px rgba(0, 0, 0, 0.32);
}
* {
  box-sizing: border-box;
}
[hidden] {
  display: none !important;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  padding-top: 72px;
  font-family: "Plus Jakarta Sans", sans-serif;
  background: var(--bg);
  color: var(--text);
  transition: 0.25s;
}
.container {
  width: min(1120px, calc(100% - 32px));
  margin: auto;
}
.topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 80;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line);
}
.nav {
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  text-decoration: none;
  font-weight: 800;
}
.brand img {
  width: 38px;
  height: 38px;
  border-radius: 12px;
}
.nav-actions {
  display: flex;
  align-items: center;
  gap: 9px;
}
.icon-btn {
  width: 42px;
  height: 42px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--text);
  border-radius: 13px;
  display: grid;
  place-items: center;
  cursor: pointer;
  font-size: 20px;
}

#musicBtn.is-playing {
  color: #fff;
  background: linear-gradient(135deg, #16a34a, #22c55e);
  box-shadow: 0 0 0 3px rgb(34 197 94 / 18%);
}
.drawer {
  position: fixed;
  inset: 0;
  z-index: 90;
  pointer-events: none;
}
.drawer.open {
  pointer-events: auto;
}
.backdrop {
  position: absolute;
  inset: 0;
  background: #001018aa;
  opacity: 0;
  transition: 0.25s;
}
.drawer.open .backdrop {
  opacity: 1;
}
.panel {
  position: absolute;
  right: 0;
  top: 0;
  height: 100%;
  width: min(360px, 88vw);
  padding: 24px;
  background: var(--surface);
  transform: translateX(105%);
  transition: 0.3s;
  box-shadow: -20px 0 60px #0004;
}
.drawer.open .panel {
  transform: none;
}
.panel-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
}
.panel-head-actions {
  display: flex;
  align-items: center;
  gap: 9px;
}
.push-bell {
  position: relative;
  transition: border-color .2s, background .2s, color .2s, transform .2s;
}
.push-bell svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.push-bell.is-on {
  color: #16a34a;
  border-color: rgba(34,197,94,.45);
  background: rgba(34,197,94,.12);
}
.push-bell.is-off {
  color: #ef4444;
  border-color: rgba(239,68,68,.4);
  background: rgba(239,68,68,.1);
}
.push-bell:hover { transform: translateY(-1px); }
.push-bell:disabled { cursor: wait; opacity: .6; transform: none; }
.push-status-dot {
  position: absolute;
  right: 7px;
  bottom: 7px;
  width: 7px;
  height: 7px;
  border: 2px solid var(--surface);
  border-radius: 50%;
  background: #ef4444;
}
.push-bell.is-on .push-status-dot { background: #22c55e; }
.menu {
  display: grid;
  gap: 8px;
}
.menu a {
  text-decoration: none;
  color: var(--text);
  padding: 14px;
  border-radius: 14px;
  font-weight: 700;
}
.menu a:hover,
.menu a.active {
  background: var(--surface2);
  color: var(--blue);
}
.hero {
  padding: 28px 0 34px;
}
.hero-cover {
  aspect-ratio: 16/9;
  max-height: 520px;
  border-radius: 28px;
  background: url("/assets/hero.svg") center/cover;
  position: relative;
  overflow: hidden;
  box-shadow: var(--shadow);
}
.hero-cover:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #02131bd9 0%, #02131b55 58%, transparent);
}
.hero-content {
  position: absolute;
  left: clamp(20px, 5vw, 58px);
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  color: #fff;
  width: min(570px, 78%);
}
.eyebrow {
  display: inline-flex;
  padding: 8px 12px;
  border: 1px solid #ffffff40;
  border-radius: 999px;
  background: #ffffff18;
  font-size: 12px;
  font-weight: 800;
}
.hero h1 {
  font-size: clamp(30px, 5vw, 58px);
  line-height: 1.08;
  margin: 16px 0 14px;
}
.hero p {
  line-height: 1.8;
  color: #d9f5f3;
}
.hero-avatar {
  position: absolute;
  left: 26px;
  bottom: -48px;
  z-index: 4;
  width: 104px;
  height: 104px;
  border: 6px solid var(--bg);
  border-radius: 50%;
  box-shadow: var(--shadow);
}
.section {
  padding: 62px 0;
}
.section.tight {
  padding-top: 26px;
}
.section-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: end;
  margin-bottom: 24px;
}
.section-head h2 {
  margin: 0;
  font-size: clamp(25px, 4vw, 38px);
}
.section-head p {
  margin: 7px 0 0;
  color: var(--muted);
}
.grid {
  display: grid;
  gap: 18px;
}
.grid-3 {
  grid-template-columns: repeat(3, 1fr);
}
.grid-2 {
  grid-template-columns: repeat(2, 1fr);
}
.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 22px;
  padding: 22px;
  box-shadow: var(--shadow);
}
.card h3 {
  margin: 0 0 9px;
}
.card p {
  color: var(--muted);
  line-height: 1.75;
}
.stat-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 18px;
}
.stat {
  background: var(--surface2);
  border: 1px solid var(--line);
  padding: 12px;
  border-radius: 16px;
  text-align: center;
}
.stat b {
  display: block;
  font-size: 18px;
}
.stat span {
  font-size: 11px;
  color: var(--muted);
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-radius: 14px;
  padding: 13px 17px;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
}
.btn.primary {
  background: var(--grad);
  color: white;
}
.btn.soft {
  background: var(--surface2);
  color: var(--text);
  border: 1px solid var(--line);
}
.actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.form {
  display: grid;
  gap: 14px;
}
.input,
.textarea,
.select {
  width: 100%;
  padding: 14px 15px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface2);
  color: var(--text);
  font: inherit;
  outline: none;
}
.textarea {
  min-height: 135px;
  resize: vertical;
}
.input:focus,
.textarea:focus,
.select:focus {
  border-color: var(--blue);
}
.faq {
  display: grid;
  gap: 12px;
}
.faq details {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 17px;
  padding: 17px 19px;
}
.faq summary {
  font-weight: 800;
  cursor: pointer;
}
.faq p {
  color: var(--muted);
  line-height: 1.7;
}
.store-card {
  display: flex;
  flex-direction: column;
}
.price {
  font-size: 31px;
  font-weight: 800;
  margin: 12px 0;
}
.price small {
  font-size: 13px;
  color: var(--muted);
}
.features {
  padding: 0;
  list-style: none;
  display: grid;
  gap: 10px;
  color: var(--muted);
  margin-bottom: 22px;
}
.features li:before {
  content: "✓";
  color: var(--green);
  font-weight: 900;
  margin-right: 9px;
}
.store-card .btn {
  margin-top: auto;
}
.review-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
}
.stars {
  color: #f59e0b;
}
.scrollbox {
  max-height: 600px;
  overflow: auto;
  padding-right: 8px;
  display: grid;
  gap: 14px;
}
.timeline {
  border-left: 2px solid var(--line);
  padding-left: 20px;
}
.update-card {
  position: relative;
}
.update-card:before {
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--grad);
  left: -27px;
  top: 25px;
}
.badge {
  display: inline-flex;
  padding: 6px 10px;
  border-radius: 999px;
  background: var(--surface2);
  color: var(--blue);
  font-size: 11px;
  font-weight: 800;
}
.date {
  font-size: 12px;
  color: var(--muted);
}
.wa {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 60;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #25d366;
  color: #fff;
  text-decoration: none;
  font-size: 29px;
  box-shadow: 0 14px 30px #25d36655;
  transition: transform 0.2s, box-shadow 0.2s;
}
.wa:hover {
  transform: translateY(-3px) scale(1.04);
  box-shadow: 0 18px 36px #25d36677;
}
.wa img {
  width: 34px;
  height: 34px;
  display: block;
}
.notice {
  padding: 13px 15px;
  border-radius: 13px;
  background: var(--surface2);
  color: var(--muted);
  display: none;
}
.notice.show {
  display: block;
}
.footer {
  border-top: 1px solid var(--line);
  padding: 30px 0;
  color: var(--muted);
  text-align: center;
  margin-top: 45px;
}
.page-title {
  padding: 50px 0 10px;
}
.page-title h1 {
  font-size: clamp(34px, 6vw, 58px);
  margin: 0;
}
.page-title p {
  color: var(--muted);
  max-width: 700px;
  line-height: 1.8;
}
.empty {
  text-align: center;
  color: var(--muted);
  padding: 30px;
}
.owner-wrap {
  max-width: 720px;
  margin: auto;
}
.danger {
  color: #ef4444;
}
.admin-item {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
}
.admin-item button {
  flex: 0 0 auto;
}
@media (max-width: 800px) {
  body {
    padding-top: 70px;
  }
  .grid-3,
  .grid-2 {
    grid-template-columns: 1fr;
  }
  .hero-cover {
    aspect-ratio: 4/5;
  }
  .hero-content {
    width: 84%;
  }
  .hero-cover:after {
    background: linear-gradient(0deg, #02131be8 0%, #02131b55 75%, transparent);
  }
  .hero-avatar {
    width: 88px;
    height: 88px;
  }
  .section {
    padding: 42px 0;
  }
  .section-head {
    align-items: start;
    flex-direction: column;
  }
  .stat-row {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* Responsive stability fixes */
html,
body {
  max-width: 100%;
  overflow-x: hidden;
}
img,
svg,
video {
  max-width: 100%;
  height: auto;
}
.hero {
  padding: 28px 0 78px;
}
.hero > .container {
  position: relative;
}
.hero-avatar {
  left: 26px;
  bottom: -48px;
}
.hero-content .actions {
  align-items: center;
}
.card {
  min-width: 0;
}
.section-head > * {
  min-width: 0;
}

@media (min-width: 801px) {
  .hero-cover {
    min-height: 430px;
  }
  .hero-avatar {
    width: 96px;
    height: 96px;
    left: 28px;
    bottom: -44px;
  }
  .hero {
    padding-bottom: 72px;
  }
}

@media (max-width: 800px) {
  .container {
    width: min(100% - 28px, 1120px);
  }
  .nav {
    height: 70px;
  }
  .brand span {
    font-size: 18px;
  }
  .hero {
    padding: 18px 0 62px;
  }
  .hero-cover {
    aspect-ratio: auto;
    min-height: 540px;
    border-radius: 24px;
  }
  .hero-content {
    left: 24px;
    right: 24px;
    top: 50%;
    width: auto;
  }
  .hero h1 {
    font-size: clamp(34px, 9vw, 46px);
  }
  .hero p {
    font-size: 16px;
    line-height: 1.75;
  }
  .hero-avatar {
    width: 78px;
    height: 78px;
    left: 22px;
    bottom: -38px;
    border-width: 5px;
  }
  .section.tight {
    padding-top: 8px;
  }
  .card {
    padding: 20px;
  }
  .actions .btn {
    min-height: 48px;
  }
}

@media (max-width: 460px) {
  .container {
    width: calc(100% - 24px);
  }
  .hero-cover {
    min-height: 560px;
  }
  .hero-content {
    left: 22px;
    right: 22px;
  }
  .hero h1 {
    font-size: 36px;
  }
  .hero-content .actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }
  .hero-content .btn {
    padding: 13px 10px;
    white-space: nowrap;
  }
  .stat-row {
    grid-template-columns: 1fr;
  }
  .wa {
    width: 54px;
    height: 54px;
    right: 16px;
    bottom: 16px;
  }
}

.link-selector {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) 52px;
  align-items: center;
  gap: 18px;
  max-width: 760px;
  margin: 0 auto;
  padding: 26px;
  text-align: center;
}

.link-selector-content {
  min-width: 0;
}

.link-selector-label {
  display: block;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.link-selector h3 {
  margin: 0;
  font-size: clamp(24px, 4vw, 34px);
}

.link-selector p {
  margin: 10px auto 18px;
  max-width: 520px;
}

.link-arrow {
  width: 52px;
  height: 52px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--surface2);
  color: var(--text);
  font: inherit;
  font-size: 25px;
  font-weight: 800;
  cursor: pointer;
  transition:
    transform 0.2s,
    border-color 0.2s,
    color 0.2s;
}

.link-arrow:hover {
  color: var(--blue);
  border-color: var(--blue);
  transform: scale(1.06);
}

@media (max-width: 520px) {
  .link-selector {
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    gap: 10px;
    padding: 20px 14px;
  }

  .link-arrow {
    width: 44px;
    height: 44px;
    font-size: 21px;
  }

  .link-selector .btn {
    width: 100%;
  }
}

/* ===========================
   STORE VOUCHER
=========================== */

.voucher-card {
  margin-bottom: 8px;
}

.voucher-header h2 {
  margin: 12px 0 8px;
}

.voucher-header p {
  margin: 0 0 18px;
}

.voucher-form {
  display: grid;
  grid-template-columns:
    minmax(0, 1fr)
    auto
    auto;
  gap: 10px;
}

.voucher-form .input {
  text-transform: uppercase;
}

.voucher-success {
  color: var(--green);
  border: 1px solid
    color-mix(
      in srgb,
      var(--green) 45%,
      var(--line)
    );
}

.voucher-error {
  color: #ef4444;
  border: 1px solid
    color-mix(
      in srgb,
      #ef4444 45%,
      var(--line)
    );
}

/* ===========================
   STORE CARD
=========================== */

.store-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.discount-badge {
  display: inline-flex;
  padding: 6px 10px;
  border-radius: 999px;
  background:
    color-mix(
      in srgb,
      var(--green) 16%,
      var(--surface2)
    );
  color: var(--green);
  font-size: 11px;
  font-weight: 800;
}

.discounted-price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 7px;
}

.original-price {
  color: var(--muted);
  font-size: 16px;
  font-weight: 600;
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}

.final-price {
  color: var(--green);
  font-size: 31px;
  font-weight: 800;
}

.features li {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}

.features li::before {
  content: none;
}

.feature-status {
  display: inline-grid;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  place-items: center;
  font-size: 14px;
  font-weight: 900;
}

.feature-enabled .feature-status {
  background:
    color-mix(
      in srgb,
      var(--green) 16%,
      transparent
    );
  color: var(--green);
}

.feature-disabled {
  color: var(--muted);
  opacity: 0.72;
}

.feature-disabled .feature-status {
  background:
    color-mix(
      in srgb,
      #ef4444 14%,
      transparent
    );
  color: #ef4444;
}

@media (max-width: 700px) {
  .voucher-form {
    grid-template-columns: 1fr;
  }

  .voucher-form .btn {
    width: 100%;
  }
}

/* ===========================
   PRODUCT PERIOD
=========================== */

.period-label {
  display: block;
  margin: 16px 0 8px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}

.period-select {
  margin-bottom: 4px;
  cursor: pointer;
}

.store-card .price {
  min-height: 67px;
}

.discounted-price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 7px;
}

.original-price {
  color: var(--muted);
  font-size: 15px;
  font-weight: 600;
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}

.final-price {
  color: var(--green);
  font-size: 31px;
  font-weight: 800;
}

.store-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.discount-badge {
  display: inline-flex;
  padding: 6px 10px;
  border-radius: 999px;
  background: color-mix(
    in srgb,
    var(--green) 16%,
    var(--surface2)
  );
  color: var(--green);
  font-size: 11px;
  font-weight: 800;
}

/* ===========================
   QRIS DONATION
=========================== */

.donation-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(280px, 0.8fr);
  gap: 20px;
  align-items: start;
}

.qris-card {
  text-align: center;
}

.qris-card h2,
.donation-info h2 {
  margin: 14px 0 8px;
}

.qris-card > p {
  max-width: 620px;
  margin: 0 auto 22px;
}

.qris-image-wrap {
  width: min(100%, 430px);
  margin: 0 auto 24px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: #fff;
}

.qris-image {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
  object-fit: contain;
}

.qris-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 22px;
}

.qris-step {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 17px;
  background: var(--surface2);
  text-align: left;
}

.qris-step span {
  display: grid;
  width: 34px;
  height: 34px;
  margin-bottom: 10px;
  place-items: center;
  border-radius: 50%;
  background: var(--grad);
  color: #fff;
  font-weight: 800;
}

.qris-step p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.donation-privacy {
  margin-top: 22px !important;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface2);
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}

.donation-benefits {
  display: grid;
  gap: 16px;
  margin: 22px 0;
  padding: 0;
  list-style: none;
}

.donation-benefits li {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.donation-benefits li > span {
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  border-radius: 14px;
  background: var(--surface2);
  font-size: 20px;
}

.donation-benefits b {
  display: block;
  margin-bottom: 4px;
}

.donation-benefits p {
  margin: 0;
  color: var(--muted);
  line-height: 1.65;
}

.donation-note {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface2);
}

.donation-note p {
  margin: 7px 0 0;
  color: var(--muted);
  line-height: 1.7;
}

@media (max-width: 860px) {
  .donation-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .qris-image-wrap {
    padding: 12px;
    border-radius: 18px;
  }

  .qris-steps {
    grid-template-columns: 1fr;
  }
}

/* ===========================
   STORE FILTER & SEARCH
=========================== */

.store-tools {
  display: grid;
  gap: 18px;
}

.store-tools-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
}

.store-tools-head h2 {
  margin: 12px 0 7px;
}

.store-tools-head p {
  margin: 0;
}

.store-result-count {
  flex: 0 0 auto;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface2);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.store-search-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.store-categories {
  display: flex;
  gap: 10px;
  padding-bottom: 5px;
  overflow-x: auto;
  scrollbar-width: thin;
}

.store-category-button {
  flex: 0 0 auto;
  min-height: 42px;
  padding: 10px 15px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface2);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
  transition:
    transform 0.2s,
    border-color 0.2s,
    color 0.2s,
    background 0.2s;
}

.store-category-button:hover {
  border-color: var(--blue);
  color: var(--blue);
  transform: translateY(-1px);
}

.store-category-button.active {
  border-color: transparent;
  background: var(--grad);
  color: #fff;
}

/* ===========================
   STORE FEATURE STATUS
=========================== */

.features li {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}

.features li::before {
  content: none;
}

.feature-status {
  display: inline-grid;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  place-items: center;
  font-size: 14px;
  font-weight: 900;
}

.feature-enabled .feature-status {
  background: color-mix(
    in srgb,
    var(--green) 16%,
    transparent
  );
  color: var(--green);
}

.feature-disabled {
  color: var(--muted);
  opacity: 0.72;
}

.feature-disabled .feature-status {
  background: color-mix(
    in srgb,
    #ef4444 14%,
    transparent
  );
  color: #ef4444;
}

/* ===========================
   PURCHASE MODAL
=========================== */

body.modal-open {
  overflow: hidden;
}

.purchase-modal {
  position: fixed;
  inset: 0;
  z-index: 150;
  display: grid;
  place-items: center;
  padding: 18px;
  visibility: hidden;
  opacity: 0;
  transition:
    opacity 0.25s,
    visibility 0.25s;
}

.purchase-modal.open {
  visibility: visible;
  opacity: 1;
}

.purchase-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 16, 24, 0.78);
  backdrop-filter: blur(8px);
}

.purchase-dialog {
  position: relative;
  z-index: 2;
  width: min(100%, 560px);
  max-height: calc(100vh - 36px);
  padding: 24px;
  overflow-y: auto;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: var(--surface);
  box-shadow: 0 25px 80px rgba(0, 0, 0, 0.4);
  transform: translateY(20px) scale(0.98);
  transition: transform 0.25s;
}

.purchase-modal.open .purchase-dialog {
  transform: translateY(0) scale(1);
}

.purchase-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 22px;
}

.purchase-head h2 {
  margin: 12px 0 0;
}

.modal-voucher-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.purchase-summary {
  display: grid;
  gap: 12px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--surface2);
}

.purchase-summary > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.purchase-summary span {
  color: var(--muted);
  font-size: 13px;
}

.purchase-summary strong {
  text-align: right;
}

.original-price {
  color: var(--muted);
  text-decoration: line-through;
  text-decoration-thickness: 2px;
}

.purchase-discount {
  color: var(--green);
}

.purchase-total {
  padding-top: 13px;
  border-top: 1px solid var(--line);
}

.purchase-total strong {
  color: var(--green);
  font-size: 25px;
}

#continueWhatsapp {
  width: 100%;
  min-height: 50px;
}

.buy-product-button {
  width: 100%;
  margin-top: auto;
}

.voucher-success {
  color: var(--green);
}

.voucher-error {
  color: #ef4444;
}

@media (max-width: 700px) {
  .store-tools-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .store-search-wrap {
    grid-template-columns: 1fr;
  }

  .store-search-wrap .btn {
    width: 100%;
  }
}

@media (max-width: 560px) {
  .purchase-modal {
    align-items: end;
    padding: 0;
  }

  .purchase-dialog {
    width: 100%;
    max-height: 92vh;
    border-radius: 24px 24px 0 0;
  }

  .modal-voucher-form {
    grid-template-columns: 1fr;
  }

  .modal-voucher-form .btn {
    width: 100%;
  }
}

/* ===========================
   RATING SUMMARY
=========================== */

.rating-summary {
  display: grid;
  grid-template-columns:
    minmax(190px, 0.7fr)
    minmax(0, 1.5fr);
  gap: 34px;
  align-items: center;
}

.rating-overview {
  text-align: center;
}

.rating-overview > strong {
  display: block;
  margin-top: 14px;
  font-size: clamp(52px, 8vw, 76px);
  line-height: 1;
}

.rating-stars {
  margin-top: 12px;
  font-size: 26px;
  letter-spacing: 3px;
}

.rating-overview p {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 14px;
}

.rating-breakdown {
  display: grid;
  gap: 13px;
}

.rating-row {
  display: grid;
  grid-template-columns:
    42px
    minmax(0, 1fr)
    74px;
  gap: 12px;
  align-items: center;
}

.rating-label {
  font-size: 13px;
  font-weight: 800;
}

.rating-progress {
  height: 11px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface2);
  border: 1px solid var(--line);
}

.rating-progress-value {
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(
    90deg,
    #f59e0b,
    #facc15
  );
  transition: width 0.45s ease;
}

.rating-count {
  color: var(--muted);
  font-size: 12px;
  text-align: right;
}

@media (max-width: 700px) {
  .rating-summary {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .rating-row {
    grid-template-columns:
      38px
      minmax(0, 1fr)
      68px;
    gap: 9px;
  }

  .rating-count {
    font-size: 11px;
  }
}
/* OWNER VOUCHER */
.owner-check-row {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  font-weight: 700;
}

.owner-check-row input,
.voucher-category-picker input {
  width: 18px;
  height: 18px;
  accent-color: var(--green);
}

.voucher-category-picker {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--surface2);
}

.voucher-category-picker[hidden] { display: none; }
.voucher-category-picker label { display: flex; align-items: center; gap: 8px; }
.voucher-admin-head, .voucher-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.voucher-status { padding: 5px 9px; border-radius: 999px; font-size: 11px; font-weight: 800; }
.voucher-status.active { color: var(--green); background: rgba(34, 197, 94, .12); }
.voucher-status.inactive { color: #ef4444; background: rgba(239, 68, 68, .12); }
@media (max-width: 620px) { .voucher-actions { width: 100%; } .voucher-actions .btn { flex: 1; } }
.owner-store-grid{align-items:start}.owner-form-actions,.feature-row-actions{display:flex;gap:10px;flex-wrap:wrap}.price-builder,.feature-builder{padding:16px;border:1px solid var(--border);border-radius:16px;background:rgba(255,255,255,.02)}.price-builder-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.price-builder label{display:grid;gap:7px;font-size:.9rem}.feature-row{display:grid;grid-template-columns:150px 1fr auto;gap:10px;align-items:center;margin-top:10px}.owner-mini-list{display:grid;gap:10px;margin-top:16px}.owner-mini-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:14px}.owner-mini-item>div:first-child{display:grid;gap:4px}.owner-mini-item>div:last-child{display:flex;gap:7px;flex-wrap:wrap}.owner-mini-item span{font-size:.82rem;opacity:.7}.section-head.compact{margin-bottom:0}@media(max-width:760px){.feature-row{grid-template-columns:1fr}.owner-mini-item{align-items:flex-start;flex-direction:column}.price-builder-head{flex-direction:column}}

.store-order-count{margin:-6px 0 14px;color:var(--muted);font-size:.92rem}.store-order-count strong{color:var(--text)}

.category-color-field{display:grid;gap:8px}.category-color-field>span{display:grid;grid-template-columns:1fr 52px auto;gap:9px}.category-color-field input[type=color]{width:52px;height:46px;padding:3px;border:1px solid var(--border);border-radius:12px;background:transparent;cursor:pointer}.category-color-dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:7px}.item-status{display:inline-flex;padding:5px 10px;border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.06em}.item-status.available{color:#22c55e;background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.35)}.item-status.unavailable{color:#ef4444;background:rgba(239,68,68,.14);border:1px solid rgba(239,68,68,.35)}.store-card[style*="--category-color"]{border-color:var(--category-color);box-shadow:inset 0 3px 0 var(--category-color)}.store-card[style*="--category-color"] .badge{border-color:var(--category-color);color:var(--category-color)}.store-category-button[style*="--category-color"]{border-color:var(--category-color)}.store-category-button[style*="--category-color"].active{background:var(--category-color);color:#fff}.buy-product-button.item-unavailable{background:#6b7280!important;border-color:#6b7280!important;color:#e5e7eb!important;cursor:not-allowed}.store-status-toast{position:fixed;top:18px;left:50%;z-index:10000;width:min(92vw,520px);padding:16px 18px 12px;transform:translate(-50%,-140%);opacity:0;border:1px solid rgba(34,197,94,.4);border-radius:16px;background:rgba(13,20,32,.97);box-shadow:0 18px 55px rgba(0,0,0,.4);color:#fff;font-weight:700;overflow:hidden;transition:.3s ease}.store-status-toast.show{transform:translate(-50%,0);opacity:1}.store-status-toast.error{border-color:rgba(239,68,68,.5)}.store-status-toast::after{content:"";position:absolute;left:0;bottom:0;height:4px;width:0;background:#22c55e}.store-status-toast.error::after{background:#ef4444}.store-status-toast.show::after{animation:store-toast-progress 5s linear forwards}@keyframes store-toast-progress{from{width:0}to{width:100%}}@media(max-width:760px){.category-color-field>span{grid-template-columns:1fr 52px}.category-color-field .btn{grid-column:1/-1}}

.notification-location-picker{display:flex;flex-wrap:wrap;gap:9px;margin-top:10px}.notification-location-picker label{display:flex;align-items:center;gap:7px;padding:9px 12px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.02)}.notification-location-picker input{accent-color:var(--green)}.global-notification{position:fixed;top:18px;left:50%;z-index:9999;width:min(92vw,540px);padding:16px 18px 13px;transform:translate(-50%,-145%);opacity:0;border:1px solid rgba(59,130,246,.45);border-radius:16px;background:rgba(13,20,32,.98);box-shadow:0 18px 55px rgba(0,0,0,.45);color:#fff;overflow:hidden;transition:.3s ease}.global-notification.show{transform:translate(-50%,0);opacity:1}.global-notification strong{display:block;font-size:1.02rem}.global-notification p{margin:6px 0 0;color:#cbd5e1}.global-notification a{display:inline-flex;margin-top:11px;color:#60a5fa;font-weight:800;text-decoration:none}.global-notification::after{content:"";position:absolute;left:0;bottom:0;height:4px;width:0;background:#3b82f6}.global-notification.show::after{animation:global-notification-progress 5s linear forwards}@keyframes global-notification-progress{from{width:0}to{width:100%}}
.global-notification{padding-right:54px}.global-notification-close{position:absolute;top:10px;right:10px;z-index:2;width:32px;height:32px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.16);border-radius:10px;background:rgba(255,255,255,.08);color:#fff;font:700 24px/1 sans-serif;cursor:pointer;transition:.2s}.global-notification-close:hover,.global-notification-close:active{background:rgba(239,68,68,.22);border-color:rgba(239,68,68,.45);transform:scale(1.05)}

.stats-owner-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat-owner-card{display:grid;gap:8px}.stat-owner-card span{color:var(--muted);font-size:.85rem}.stat-owner-card strong{font-size:1.8rem}.stat-product-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid var(--line)}.owner-sort-list{display:grid;gap:12px}.sortable-item{position:relative}.sortable-item.dragging{opacity:.45;border-color:var(--blue)!important}.drag-handle{flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface2);color:var(--muted);cursor:grab;touch-action:none}.owner-mini-item.sortable-item{display:grid;grid-template-columns:auto 1fr auto}.maintenance-screen{position:fixed;inset:0;z-index:30000;display:grid;place-items:center;padding:24px;background:var(--bg)}.maintenance-screen[hidden]{display:none}.maintenance-card{width:min(92vw,520px);padding:40px 28px;text-align:center;border:1px solid var(--line);border-radius:28px;background:var(--surface);box-shadow:var(--shadow)}.maintenance-card img{width:82px;height:82px;border-radius:22px;margin-bottom:18px}.maintenance-card h1{margin:16px 0 10px}.maintenance-card p{color:var(--muted);line-height:1.7}.maintenance-active{overflow:hidden}@media(max-width:800px){.stats-owner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.owner-mini-item.sortable-item{grid-template-columns:auto 1fr}.owner-mini-item.sortable-item>div:last-child{grid-column:1/-1}.admin-item.sortable-item{align-items:flex-start}.drag-handle{margin-bottom:8px}}

/* Owner dashboard navigation and responsive card layout */
#ownerContent.owner-wrap{max-width:1120px}
.owner-tabs{position:static;display:flex;gap:9px;margin:18px 0 8px;padding:10px;overflow-x:auto;scrollbar-width:none;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 12px 35px rgba(0,0,0,.1)}
.owner-tabs::-webkit-scrollbar{display:none}
.owner-tab{flex:0 0 auto;padding:11px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);color:var(--muted);font:inherit;font-weight:800;cursor:pointer;transition:.2s}
.owner-tab:hover{color:var(--text);border-color:var(--blue)}
.owner-tab.active{border-color:transparent;background:linear-gradient(135deg,var(--blue),var(--green));color:#fff;box-shadow:0 8px 22px color-mix(in srgb,var(--blue) 25%,transparent)}
.owner-panel[hidden]{display:none!important}
#ownerContent .owner-panel{padding-top:28px;padding-bottom:28px}
#ownerContent .admin-item{min-width:0}
#ownerContent .admin-item>div{min-width:0}
#ownerContent .admin-item h3,#ownerContent .admin-item p,#ownerContent .admin-item .date,#ownerContent .owner-mini-item span{overflow-wrap:anywhere;word-break:break-word}
#ownerContent .voucher-actions{justify-content:flex-end}

@media(max-width:800px){
  #ownerContent{width:min(100% - 24px,1120px)}
  #ownerContent .page-title{padding-top:28px}
  #ownerContent .page-title h1{font-size:clamp(30px,10vw,42px)}
  #ownerContent .page-title .section-head{align-items:flex-start}
  .owner-tabs{margin-inline:-2px;padding:8px;border-radius:15px}
  .owner-tab{padding:10px 13px;font-size:.86rem}
  #ownerContent .owner-panel{padding:20px 0}
  #ownerContent .owner-panel>.section-head{align-items:flex-start;gap:14px}
  #ownerContent .card{padding:18px;border-radius:22px}
  #ownerContent .admin-item,#ownerContent .admin-item.sortable-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px}
  #ownerContent .admin-item:not(.sortable-item){grid-template-columns:minmax(0,1fr)}
  #ownerContent .admin-item>.voucher-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;justify-content:stretch}
  #ownerContent .voucher-actions .btn{width:100%;min-width:0;padding:11px 9px;font-size:.83rem;white-space:normal}
  #ownerContent .owner-mini-item.sortable-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}
  #ownerContent .owner-mini-item.sortable-item>div:last-child{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  #ownerContent .owner-mini-item .btn{width:100%;min-width:0;padding:10px 8px;font-size:.8rem;white-space:normal}
  #ownerContent .scrollbox,#ownerContent .owner-sort-list{overflow:visible}
}

@media(max-width:420px){
  #ownerContent .admin-item>.voucher-actions,#ownerContent .owner-mini-item.sortable-item>div:last-child{grid-template-columns:1fr 1fr}
  #ownerContent .stats-owner-grid{grid-template-columns:1fr 1fr}
  #ownerContent .stat-owner-card{padding:14px}
  #ownerContent .stat-owner-card strong{font-size:1.45rem}
}

.page-transition-loader{position:fixed;inset:0;z-index:20000;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(10px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility .3s ease}.page-transition-loader.show{opacity:1;visibility:visible;pointer-events:auto}.page-transition-loader.leaving{opacity:0}.page-loader-card{width:min(86vw,310px);padding:28px 24px 23px;text-align:center;border:1px solid color-mix(in srgb,var(--blue) 22%,var(--line));border-radius:24px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 28px 80px rgba(0,0,0,.22);transform:translateY(12px) scale(.96);transition:transform .35s ease}.page-transition-loader.show .page-loader-card{transform:translateY(0) scale(1)}.page-loader-logo{position:relative;width:76px;height:76px;margin:0 auto 16px;display:grid;place-items:center;border-radius:23px;background:color-mix(in srgb,var(--blue) 12%,var(--surface));box-shadow:0 0 0 8px color-mix(in srgb,var(--blue) 8%,transparent);animation:page-loader-pulse 1.5s ease-in-out infinite}.page-loader-logo::after{content:"";position:absolute;inset:-9px;border:2px solid color-mix(in srgb,var(--blue) 35%,transparent);border-radius:29px;animation:page-loader-ring 1.5s ease-out infinite}.page-loader-logo img{width:50px;height:50px;border-radius:15px}.page-loader-card strong{display:block;font-size:1.05rem;color:var(--text)}.page-loader-card>span{display:block;margin-top:7px;font-size:.82rem;color:var(--muted)}.page-loader-dots{display:flex;justify-content:center;gap:6px;margin-top:16px}.page-loader-dots i{width:7px;height:7px;border-radius:50%;background:var(--blue);animation:page-loader-dot 1s ease-in-out infinite}.page-loader-dots i:nth-child(2){animation-delay:.15s}.page-loader-dots i:nth-child(3){animation-delay:.3s}@keyframes page-loader-pulse{50%{transform:translateY(-4px) scale(1.04)}}@keyframes page-loader-ring{0%{opacity:.8;transform:scale(.85)}80%,100%{opacity:0;transform:scale(1.18)}}@keyframes page-loader-dot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}@media(prefers-reduced-motion:reduce){.page-loader-logo,.page-loader-logo::after,.page-loader-dots i{animation:none}}
