
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800;900&family=Playfair+Display:ital,wght@0,700;0,900;1,700&display=swap');

/* ==========================================
   JOY!'S WORLD
   THE DOLLHOUSE STYLESHEET
   PINK CHROME EDITION
   ========================================== */

:root {
  --pink: #ff65b7;
  --hot: #e81786;
  --dark: #200016;
  --wine: #680039;
  --cream: #fff3fa;
  --silver: #f4edf4;
  --border: #ffc4e5;
  --shadow: 0 20px 48px #36001d6b;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  color: var(--cream);
  font-family: 'DM Sans', Arial, sans-serif;
  line-height: 1.55;
  min-height: 100vh;
  background:
    radial-gradient(
      ellipse at 20% 5%,
      #b6006a88,
      transparent 40%
    ),
    radial-gradient(
      ellipse at 85% 35%,
      #fa4ca45e,
      transparent 38%
    ),
    repeating-linear-gradient(
      115deg,
      transparent 0 45px,
      #ff73bb12 46px 48px,
      transparent 49px 95px
    ),
    linear-gradient(
      140deg,
      #280018,
      #730041 50%,
      #250014
    );
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  opacity: .17;
  pointer-events: none;
  background-image:
    radial-gradient(
      circle,
      white 1px,
      transparent 2px
    );
  background-size: 35px 35px;
}

/* CUSTOM CURSOR */

html,
body,
a,
button,
input,
textarea,
select {
  cursor: url("cursor.svg") 8 8, auto;
}

a,
button,
select {
  cursor: url("cursor.svg") 8 8, pointer;
}

/* GLOBAL ELEMENTS */

a {
  color: inherit;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  cursor: pointer;
}

button:disabled {
  opacity: .7;
}

img {
  display: block;
  max-width: 100%;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1,
h2,
h3 {
  line-height: 1.12;
}

h2 {
  font-size: clamp(1.7rem, 3.3vw, 3rem);
}

p {
  max-width: 68ch;
}

[hidden] {
  display: none !important;
}

/* ==========================================
   ACCESSIBILITY
   ========================================== */

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: white;
  color: black;
  padding: 12px;
  z-index: 100;
}

.skip-link:focus {
  left: 12px;
}

:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 4px;
}

/* ==========================================
   HEADER
   ========================================== */

.site-header {
  position: relative;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 25px;
  padding: 24px clamp(16px, 4vw, 65px);
  border-bottom: 2px solid #ff9bd2;
  background:
    linear-gradient(
      135deg,
      #5a0035,
      #a30063,
      #45002b
    );
  box-shadow: 0 10px 30px #17000d66;
}

.brand {
  text-decoration: none;
  display: flex;
  flex-direction: column;
  line-height: 1;
  flex-shrink: 0;
}

.brand strong {
  font-size: clamp(1.5rem, 3vw, 2.6rem);
  letter-spacing: -.06em;
  color: #fff;
  text-shadow:
    2px 2px 0 #ff6fbc,
    4px 4px 0 #6c003c,
    0 0 18px #ffb4df;
}

.brand em {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: 1.3rem;
  color: #ffb6dd;
  align-self: flex-end;
}

/* NAVIGATION CHARMS */

.charm-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: clamp(8px, 1.8vw, 22px);
}

.charm {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  min-width: 65px;
  text-decoration: none;
  transition: transform .25s ease;
}

.charm:hover {
  transform: translateY(-5px);
}

.charm-icon {
  position: relative;
  width: 58px;
  height: 58px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: 27px;
  color: white;

  background:
    radial-gradient(
      circle at 28% 16%,
      #ffffffdd,
      transparent 34%
    ),
    linear-gradient(
      145deg,
      #ffe0f2,
      #ff7fbe 35%,
      #e91485 70%,
      #83004c
    );

  border: 2px solid #ffe4f5;

  box-shadow:
    inset 0 3px 7px #ffffffb8,
    inset 0 -6px 10px #60003488,
    0 5px 0 #720040,
    0 8px 20px #ff48aa77,
    0 0 15px #ff8fce88;

  transition:
    transform .25s ease,
    box-shadow .25s ease,
    filter .25s ease;
}

.charm:hover .charm-icon,
.charm.selected .charm-icon {
  transform: scale(1.08) rotate(-5deg);

  box-shadow:
    inset 0 3px 7px #ffffffdd,
    0 5px 0 #720040,
    0 0 28px #ffa3da,
    0 9px 24px #ff48aa99;
}

.charm:hover .charm-icon {
  filter: brightness(1.1);
}

.charm:active .charm-icon {
  transform: scale(.95);
}

.charm-label {
  color: #fff3fa;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .07em;
}

/* ==========================================
   MARQUEE
   ========================================== */

.marquee {
  overflow: hidden;
  white-space: nowrap;
  background: #ffabd8;
  color: #5b0036;
  border-bottom: 2px solid white;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .13em;
}

.marquee-track {
  display: flex;
  width: max-content;
  animation: scroll 26s linear infinite;
}

.marquee-track span {
  padding: 10px 0;
  flex-shrink: 0;
}

@keyframes scroll {
  to {
    transform: translateX(-50%);
  }
}

/* ==========================================
   SHARED LAYOUT
   ========================================== */

.page-wrap {
  width: min(1200px, calc(100% - 32px));
  margin: 0 auto;
  padding: 45px 0 85px;
}

.panel {
  position: relative;
  padding: clamp(22px, 4vw, 44px);
  border-radius: 25px;
  border: 2px solid #ffb9df;
  background:
    linear-gradient(
      145deg,
      #8d0056f2,
      #4c002feb
    );

  box-shadow:
    var(--shadow),
    inset 0 1px 0 #ffffff77,
    0 0 0 5px #ff94cd18;
}

.panel::before {
  content: "✦";
  position: absolute;
  top: 10px;
  right: 18px;
  color: #ffd8ee;
  font-size: 18px;
  pointer-events: none;
}

.eyebrow {
  display: block;
  color: #ffd0e9;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .15em;
  margin-bottom: 14px;
}

/* CHROME HEADINGS */

.chrome {
  font-size: clamp(3.2rem, 8vw, 7rem);
  font-weight: 900;
  letter-spacing: -.075em;
  line-height: 1;
  color: #fff;

  background:
    linear-gradient(
      #fff 5%,
      #f8d8f0 24%,
      #a2a0b3 45%,
      #fff 52%,
      #ffd4ed 68%,
      #ffffff 85%
    );

  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;

  filter: drop-shadow(3px 5px 0 #75003f);
  margin-bottom: 22px;
}

.script,
.signature {
  font-family: 'Playfair Display', Georgia, serif;
  font-style: italic;
  color: #ffc2e2;
}

.signature {
  font-size: 1.3rem;
  margin-top: 24px;
}

/* ==========================================
   SEXY PINK CHROME BUTTONS
   ========================================== */

.btn {
  position: relative;
  isolation: isolate;
  overflow: hidden;

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;

  min-height: 52px;
  max-width: 100%;

  padding: 14px 25px;

  border: 2px solid #ffe5f4;
  border-radius: 999px;

  font-family: 'DM Sans', Arial, sans-serif;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .075em;
  line-height: 1.35;

  text-align: center;
  text-decoration: none;

  box-shadow:
    inset 0 2px 2px #ffffffcc,
    inset 0 -4px 8px #75003f55,
    0 5px 0 #650039,
    0 10px 24px #18000f66,
    0 0 16px #ff77c144;

  transition:
    transform .22s ease,
    box-shadow .22s ease,
    border-color .22s ease,
    filter .22s ease;

  -webkit-tap-highlight-color: transparent;
}

/* HOT PINK CHROME */

.btn.primary {
  color: #56002e;

  background:
    radial-gradient(
      ellipse at 28% 0%,
      #ffffffdd,
      transparent 43%
    ),
    linear-gradient(
      175deg,
      #fff5fc 0%,
      #ffd4eb 15%,
      #ff94ce 32%,
      #ff4ca6 48%,
      #ffd1e9 53%,
      #f32696 65%,
      #ad005e 100%
    );

  text-shadow: 0 1px 0 #ffffff99;
}

/* DARK CHERRY CHROME */

.btn.ghost {
  color: #fff5fc;

  background:
    radial-gradient(
      ellipse at 30% 0%,
      #ffb2dc88,
      transparent 45%
    ),
    linear-gradient(
      175deg,
      #ae3279 0%,
      #780046 32%,
      #390022 49%,
      #a02b71 53%,
      #4d002e 75%,
      #260018 100%
    );

  text-shadow: 0 1px 3px #260018;
}

/* SHIMMER SWEEP */

.btn::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;

  background:
    linear-gradient(
      115deg,
      transparent 25%,
      #ffffff00 35%,
      #ffffffb8 49%,
      #ffffff00 62%,
      transparent 75%
    );

  transform: translateX(-150%);
  transition: transform .65s ease;

  pointer-events: none;
  z-index: -1;
}

/* GLASSY TOP REFLECTION */

.btn::after {
  content: "";
  position: absolute;

  top: 3px;
  left: 12%;
  right: 12%;

  height: 35%;
  border-radius: 999px;

  background:
    linear-gradient(
      to bottom,
      #ffffff8c,
      #ffffff00
    );

  opacity: .65;
  pointer-events: none;
  z-index: -1;
}

/* HOVER */

.btn:hover {
  transform: translateY(-4px) scale(1.025);
  border-color: #fff;

  box-shadow:
    inset 0 2px 3px #ffffffed,
    inset 0 -4px 9px #75003f55,
    0 8px 0 #650039,
    0 16px 30px #18000f77,
    0 0 28px #ff88ccaa;

  filter: saturate(1.13);
}

.btn:hover::before {
  transform: translateX(150%);
}

/* PRESS */

.btn:active {
  transform: translateY(3px) scale(.98);

  box-shadow:
    inset 0 3px 8px #65003955,
    0 2px 0 #650039,
    0 5px 12px #18000f66;
}

.btn:disabled {
  opacity: .65;
  filter: grayscale(.15);
  transform: none;
  cursor: not-allowed;
}

.actions,
.center-actions {
  display: flex;
  gap: 13px;
  flex-wrap: wrap;
  margin-top: 25px;
}

.center-actions {
  justify-content: center;
}

.text-link {
  display: inline-block;
  color: #ffd2ea;
  font-weight: 800;
  text-underline-offset: 5px;
  overflow-wrap: anywhere;
}

/* ==========================================
   HOME
   ========================================== */

.hero {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 35px;
  align-items: center;
  overflow: hidden;
}

.hero-strap {
  font-size: clamp(1.3rem, 2.6vw, 2.1rem);
  font-weight: 900;
  line-height: 1.2;
}

.hero-sub {
  color: #ffbbdf;
  font-size: 1.15rem;
  font-style: italic;
  font-weight: 700;
}

.hero-copy > p:not(.hero-strap):not(.hero-sub) {
  font-size: 1.05rem;
}

.hero-image {
  position: relative;
  max-width: 430px;
  justify-self: center;
  transform: rotate(2deg);
}

.hero-image img {
  width: 100%;
  max-height: 520px;
  object-fit: cover;
  border: 10px solid #ffd8ed;
  border-radius: 15px;
  box-shadow: 12px 14px 0 #f0369a;
}

.image-stamp {
  position: absolute;
  left: -14px;
  bottom: 16px;
  background: #ffb8df;
  color: #600039;
  padding: 10px 16px;
  border: 2px solid white;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  transform: rotate(-8deg);
}

.section {
  margin-top: 85px;
}

.section-head {
  text-align: center;
  margin-bottom: 30px;
}

.section-head h2 {
  color: #fff;
  text-shadow: 3px 4px 0 #8c004b;
}

.section-head p {
  margin: 0 auto;
}

/* ==========================================
   MUSIC
   ========================================== */

.music-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  align-items: stretch;
}

.record-panel {
  text-align: center;
}

.record {
  width: min(260px, 75%);
  aspect-ratio: 1;
  margin: 10px auto 30px;
  border-radius: 50%;

  display: grid;
  place-items: center;

  background:
    repeating-radial-gradient(
      circle,
      #111 0 4px,
      #28212b 5px 6px,
      #111 7px 11px
    );

  border: 6px solid #252025;
  box-shadow: 0 10px 25px #15000d99;
  animation: spin-record 8s linear infinite;
}

.record > span {
  display: flex;
  flex-direction: column;
  justify-content: center;

  width: 34%;
  aspect-ratio: 1;
  border-radius: 50%;

  background: #f7369c;
  color: white;
  font-weight: 900;
  font-size: 1.4rem;

  border: 4px solid #ffb4da;
}

.record small {
  font-size: 8px;
}

@keyframes spin-record {
  to {
    transform: rotate(360deg);
  }
}

.jukebox {
  border: 2px solid #ffc6e3;
  border-radius: 25px;
  padding: 26px;

  background:
    linear-gradient(
      155deg,
      #ffb3dc,
      #f553aa 55%,
      #ad005f
    );

  color: #5c0036;
  box-shadow: var(--shadow);
}

.jukebox-top {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-weight: 900;
  font-size: 12px;
  letter-spacing: .08em;
}

.jukebox h3 {
  font-size: clamp(2rem, 4vw, 3.2rem);
  margin: 25px 0 5px;
}

.jukebox iframe {
  display: block;
  width: 100%;
  height: 175px;
  border: 0;
  border-radius: 12px;
  margin: 24px 0;
}

.jukebox .text-link {
  color: #51002d;
}

/* ==========================================
   PHOTOS
   ========================================== */

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px;
  max-width: 850px;
  margin: 35px auto;
}

.polaroid {
  width: 100%;
  background: #fff4fa;
  border: 0;
  padding: 13px 13px 24px;
  color: #65003c;

  box-shadow:
    12px 15px 0 #e62991,
    0 20px 40px #19000e66;

  transition: transform .25s;
}

.polaroid:first-child {
  transform: rotate(-4deg);
}

.polaroid:last-child {
  transform: rotate(4deg);
}

.polaroid:hover {
  transform: rotate(0) translateY(-8px);
}

.polaroid img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}

.polaroid span {
  display: block;
  padding-top: 20px;
  font-weight: 900;
  font-size: 12px;
  letter-spacing: .05em;
}

/* ==========================================
   ABOUT
   ========================================== */

.about-panel {
  display: grid;
  grid-template-columns:
    minmax(0, 320px)
    minmax(0, 1fr);

  gap: clamp(25px, 5vw, 65px);
  align-items: center;
  justify-content: center;
}

.about-image {
  width: 100%;
  max-width: 310px;
  margin: 0 auto;
  position: relative;
}

.about-image img {
  width: 100%;
  height: 385px;
  object-fit: cover;

  border: 10px solid #ffd9ed;
  border-radius: 14px;

  box-shadow: 10px 12px 0 #f23c9e;
  transform: rotate(-3deg);
}

.about-image span {
  position: absolute;
  bottom: -15px;
  right: -10px;

  padding: 10px 14px;

  background: #ffb4dd;
  color: #5d0038;

  font-size: 11px;
  font-weight: 900;

  border: 2px solid white;
  transform: rotate(5deg);
}

.about-copy h2 {
  font-size: clamp(2.3rem, 4vw, 4.5rem);
  margin-bottom: 20px;
}

.about-copy h2 i {
  color: #ffc2e4;
}

.about-copy p {
  font-size: 1rem;
}

.about-lede {
  font-size: 1.25rem !important;
  font-weight: 900;
  color: #ffbfe0;
}

/* ==========================================
   PAGE BANNERS
   ========================================== */

.page-banner {
  text-align: center;
  padding: 50px 15px 60px;
}

.page-banner .chrome {
  margin: 12px auto 25px;
}

.page-banner p {
  margin: 10px auto;
}

.page-banner .script {
  font-size: clamp(1.4rem, 3vw, 2.3rem);
}

.mini-feature,
.teaser {
  text-align: center;
  margin: 35px auto;
}

.mini-feature p,
.teaser p {
  margin-left: auto;
  margin-right: auto;
}

.mini-feature .actions {
  justify-content: center;
}

/* ==========================================
   CONNECT PAGE
   INSTAGRAM + TIKTOK
   ========================================== */

.social-panel {
  max-width: 850px;
}

.social-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin: 32px 0 25px;
}

.social-btn {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 15px;

  width: 100%;
  min-height: 95px;

  padding: 18px 20px;

  border-radius: 22px;
  text-align: left;
}

.instagram-btn {
  color: #54002e;

  background:
    radial-gradient(
      circle at 20% 0%,
      #ffffffbb,
      transparent 40%
    ),
    linear-gradient(
      150deg,
      #ffe0f1,
      #ff9ace 35%,
      #ff4aa8 65%,
      #b9006c
    );
}

.tiktok-btn {
  color: #fff4fb;

  background:
    radial-gradient(
      circle at 20% 0%,
      #ffb8df88,
      transparent 45%
    ),
    linear-gradient(
      145deg,
      #b83181,
      #69003e 45%,
      #280018 100%
    );
}

.social-symbol {
  display: grid;
  place-items: center;

  flex-shrink: 0;

  width: 48px;
  height: 48px;

  border: 2px solid #ffffffbb;
  border-radius: 16px;

  background: #ffffff33;

  box-shadow:
    inset 0 2px 3px #ffffff77,
    0 4px 12px #39002344;

  font-size: 30px;
  font-weight: 900;
}

.social-copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 0;
}

.social-copy strong {
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .1em;
}

.social-copy small {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
  overflow-wrap: anywhere;
}

.social-arrow {
  margin-left: auto;
  font-size: 21px;
  font-weight: 900;
  transition: transform .2s ease;
}

.social-btn:hover .social-arrow {
  transform: translate(3px, -3px);
}

.social-divider {
  display: flex;
  justify-content: center;
  align-items: center;

  margin: 30px 0 12px;

  color: #ffd3e9;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .15em;
}

/* ==========================================
   BOOKING
   ========================================== */

.booking-layout {
  display: grid;
  grid-template-columns:
    minmax(0, .75fr)
    minmax(0, 1.25fr);

  gap: 25px;
  align-items: start;
}

.booking-profile img {
  width: 100%;
  max-height: 420px;
  object-fit: cover;

  border: 7px solid #ffd8ee;
  border-radius: 12px;
  margin-bottom: 25px;
}

.booking-profile h2 {
  font-size: 2rem;
}

.service-list {
  display: grid;
  gap: 10px;
  margin: 25px 0;
}

.service-list span {
  background: #ffb9df20;
  border: 1px solid #ffb9df88;
  border-radius: 12px;

  padding: 12px;

  font-size: 12px;
  font-weight: 900;
}

.booking-form label,
.student-form label {
  display: flex;
  flex-direction: column;
  gap: 7px;

  margin-bottom: 17px;

  color: #ffe2f1;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .06em;
}

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 15px;
}

input,
select,
textarea {
  width: 100%;
  padding: 13px 14px;

  border-radius: 12px;
  border: 2px solid #ffabd6;
  outline: none;

  background: #fff4fa;
  color: #50002d;

  font-size: 14px;
  font-weight: 500;
}

input:focus,
select:focus,
textarea:focus {
  border-color: #ff3fa0;
  box-shadow: 0 0 0 4px #ff91c966;
}

textarea {
  resize: vertical;
}

.submit-btn {
  width: 100%;
}

.form-status {
  color: #ffe0ef;
  margin-top: 15px;
}

.fine-print {
  font-size: 12px;
  opacity: .8;
  line-height: 1.6;
}

/* ==========================================
   ARCADE
   ========================================== */

.arcade-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: start;
}

.game-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.sound-toggle {
  padding: 9px 13px;
  border-radius: 999px;

  background:
    linear-gradient(
      165deg,
      #fff2fa,
      #ffb1da 48%,
      #f04aa2
    );

  color: #5d0035;
  border: 2px solid white;

  font-size: 11px;
  font-weight: 900;

  box-shadow:
    inset 0 2px 2px #ffffffbb,
    0 4px 0 #81004a;

  transition:
    transform .2s ease,
    box-shadow .2s ease,
    filter .2s ease;
}

.sound-toggle:hover {
  transform: translateY(-2px);
  filter: brightness(1.08);
}

.sound-toggle:active {
  transform: translateY(2px);
}

.slot-machine {
  padding: 20px;
  border-radius: 22px;
  border: 4px solid #ffdfef;

  background:
    linear-gradient(
      160deg,
      #ff9ed0,
      #ed3295,
      #9a0055
    );

  box-shadow: inset 0 0 25px #68003e66;
  text-align: center;
  margin: 25px 0;
}

.slot-window {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
  margin-bottom: 20px;
}

.reel {
  display: grid;
  place-items: center;
  aspect-ratio: 1;

  border: 3px solid #ffc6e5;
  border-radius: 14px;

  background: #fff5fb;

  font-size: clamp(2rem, 5vw, 3.8rem);

  box-shadow: inset 0 4px 12px #ad669c66;
}

.spin-button {
  width: 100%;
}

.game-result {
  min-height: 48px;
  margin: 22px auto 15px;
  font-weight: 900;
  color: #fff;
}

.scoreboard {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: white;
  font-size: 12px;
  font-weight: 900;
}

/* ==========================================
   UNIVERSITY
   ========================================== */

.student-form {
  margin-top: 25px;
}

.student-output {
  margin-top: 30px;
}

.student-id {
  overflow: hidden;
  border: 3px solid #ffdfef;
  border-radius: 20px;
  padding: 20px;

  background:
    radial-gradient(
      circle at 90% 10%,
      #ffffff77,
      transparent 30%
    ),
    linear-gradient(
      145deg,
      #ffb5df,
      #f047a3 55%,
      #900051
    );

  color: #54002f;
  box-shadow: 0 10px 25px #1c001255;
}

.id-top,
.id-bottom {
  display: block;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .07em;
}

.id-inner {
  display: flex;
  align-items: center;
  gap: 20px;
  margin: 24px 0;
}

.id-icon {
  display: grid;
  place-items: center;

  width: 80px;
  height: 80px;

  border-radius: 18px;
  background: #fff0f8;
  font-size: 40px;
}

.id-inner div {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.id-inner strong {
  font-size: 1.5rem;
  overflow-wrap: anywhere;
}

.id-inner small {
  font-size: 10px;
}

.certificate {
  margin: 25px 0;
  padding: 30px 20px;

  border: 9px double #d591af;

  background: #fff4f8;
  color: #590036;

  text-align: center;
}

.certificate > span {
  font-weight: 900;
  letter-spacing: .1em;
  font-size: 11px;
}

.certificate h3 {
  margin: 20px 0;
  font-family: Georgia, serif;
}

.certificate strong {
  display: block;
  font-family: Georgia, serif;
  font-size: 1.5rem;
  overflow-wrap: anywhere;
}

.certificate em {
  display: block;
  margin-top: 25px;
  font-family: Georgia, serif;
  font-size: 1.3rem;
}

/* ==========================================
   FOOTER
   ========================================== */

.site-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 22px;

  padding: 32px clamp(16px, 4vw, 65px);

  border-top: 2px solid #ffb8df;

  background:
    linear-gradient(
      135deg,
      #200015,
      #50002e,
      #200015
    );

  font-size: 11px;
  font-weight: 800;
  letter-spacing: .05em;
}

.footer-identity {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.footer-identity strong {
  color: #ffd4eb;
  font-size: 15px;
  letter-spacing: .08em;
}

.footer-identity > span {
  color: #ffb8da;
  font-size: 10px;
}

.footer-socials {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.footer-socials a {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-height: 40px;
  padding: 10px 15px;

  border: 1px solid #ffb8df;
  border-radius: 999px;

  color: #fff3fa;

  background:
    linear-gradient(
      160deg,
      #a32a74,
      #570033
    );

  font-size: 10px;
  font-weight: 900;
  letter-spacing: .06em;

  text-decoration: none;

  box-shadow: 0 4px 0 #210015;

  transition:
    transform .2s ease,
    box-shadow .2s ease;
}

.footer-socials a:hover {
  transform: translateY(-3px);

  box-shadow:
    0 7px 0 #210015,
    0 0 18px #ff8bc999;
}

.site-footer .footer-door {
  color: #ffd4eb;
  font-size: 11px;
  text-underline-offset: 4px;
}

.site-footer a {
  color: #ffb8dc;
}

/* ==========================================
   PHOTO LIGHTBOX
   ========================================== */

.photo-dialog {
  max-width: min(90vw, 750px);
  max-height: 90vh;
  padding: 20px;

  border: 3px solid #ffc4e5;
  border-radius: 18px;

  background: #5d0038;
  color: white;
  text-align: center;
}

.photo-dialog::backdrop {
  background: #13000cdd;
}

.photo-dialog img {
  max-height: 70vh;
  margin: auto;
  object-fit: contain;
}

.close-dialog {
  display: block;
  margin-left: auto;
  margin-bottom: 10px;

  border: 0;
  background: #ffb6dc;
  color: #5c0038;

  border-radius: 50%;
  width: 38px;
  height: 38px;

  font-weight: 900;

  transition:
    transform .2s ease,
    filter .2s ease;
}

.close-dialog:hover {
  transform: translateY(-2px);
  filter: brightness(1.08);
}

/* ==========================================
   CURSOR SPARKLES
   ========================================== */

.pointer-sparkle {
  position: fixed;
  z-index: 9999;
  pointer-events: none;

  color: #ffd0eb;
  font-size: 19px;
  text-shadow: 0 0 12px #ff55ad;

  animation: sparkle-float .65s ease-out forwards;
}

@keyframes sparkle-float {
  to {
    transform: translateY(-32px) rotate(50deg);
    opacity: 0;
  }
}

/* ==========================================
   MOBILE
   ========================================== */

@media (max-width: 900px) {
  .site-header {
    flex-direction: column;
    gap: 25px;
  }

  .hero,
  .music-grid,
  .about-panel,
  .booking-layout,
  .arcade-layout {
    grid-template-columns: 1fr;
  }

  .hero-image {
    max-width: 340px;
  }

  .about-image {
    max-width: 260px;
    margin: 0 auto 25px;
  }

  .about-image img {
    height: 330px;
  }
}

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

  .social-btn {
    min-height: 82px;
    padding: 15px;
  }

  .site-footer {
    flex-direction: column;
    text-align: center;
    gap: 20px;
  }

  .footer-identity {
    align-items: center;
  }

  .footer-socials {
    justify-content: center;
  }

  .btn {
    white-space: normal;
    overflow-wrap: anywhere;
  }
}

@media (max-width: 600px) {
  .page-wrap {
    width: calc(100% - 24px);
    padding-top: 25px;
  }

  .site-header {
    padding: 22px 12px;
  }

  .charm-nav {
    gap: 9px;
  }

  .charm {
    min-width: 46px;
    gap: 5px;
  }

  .charm-icon {
    width: 45px;
    height: 45px;
    font-size: 21px;
  }

  .charm-label {
    font-size: 8px;
    letter-spacing: 0;
  }

  .panel {
    padding: 22px;
  }

  .gallery-grid {
    gap: 20px;
  }

  .polaroid {
    padding: 7px 7px 14px;
  }

  .polaroid span {
    font-size: 9px;
    padding-top: 12px;
  }

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

  .page-banner {
    padding: 35px 8px;
  }

  .chrome {
    font-size: clamp(2.6rem, 12vw, 4.5rem);
  }

  .section {
    margin-top: 55px;
  }

  .scoreboard {
    font-size: 10px;
  }
}

@media (max-width: 400px) {
  .social-symbol {
    width: 42px;
    height: 42px;
    font-size: 26px;
  }

  .social-copy strong {
    font-size: 12px;
  }

  .social-copy small {
    font-size: 10px;
  }

  .btn {
    padding: 13px 17px;
    font-size: 11px;
  }
}

/* ==========================================
   REDUCED MOTION
   ========================================== */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* ==========================================
   PRINT UNIVERSITY CERTIFICATE
   ========================================== */

@media print {
  body {
    background: white !important;
  }

  body::before,
  .site-header,
  .marquee,
  .site-footer,
  .page-banner,
  .arcade-panel,
  .student-form,
  .university-panel > .eyebrow,
  .university-panel > h2,
  .university-panel > p,
  .student-id,
  #print-certificate,
  .mini-feature,
  .fine-print {
    display: none !important;
  }

  .page-wrap,
  .arcade-layout,
  .university-panel,
  .student-output {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: white !important;
  }

  .certificate {
    display: block !important;
    margin: 35px auto !important;
    max-width: 700px;
    break-inside: avoid;
  }
}
