/* ==========================================
   Design Tokens & Gingham Styles
   ========================================== */
:root {
  --cream-bg: #faf6ee;
  --dark-brown: #4e3629;
  --red-theme: #ea232b;
  --orange-theme: #f26d21;
  --yellow-theme: #fbc02d;
  --blue-theme: #009ce3;
  --purple-theme: #5e498c;
  --green-theme: #2e7d32;
  
  --font-marker: 'Gochi Hand', cursive;
  --font-letter: 'Caveat', cursive;
  --font-body: 'Montserrat', sans-serif;
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--font-body);
  background-color: #171513;
  color: var(--dark-brown);
  overflow: hidden;
  height: 100vh;
  width: 100vw;
  user-select: none;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Background Confetti Canvas */
#effects-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 99;
}

/* Music Control Button */
.music-btn {
  position: fixed;
  top: 20px;
  right: 20px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid var(--dark-brown);
  background-color: var(--cream-bg);
  color: var(--dark-brown);
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  z-index: 100;
  transition: all 0.2s ease;
  font-size: 1.1rem;
  box-shadow: 0 4px 0 var(--dark-brown);
}

.music-btn:hover {
  transform: translateY(2px);
  box-shadow: 0 2px 0 var(--dark-brown);
}

/* ==========================================
   Screen Transitions (Stretched Fullscreen)
   ========================================== */
.screen {
  position: absolute;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0;
  pointer-events: none;
  transform: scale(0.97) rotate(-0.5deg);
  transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.15);
  padding: 0;
}

.screen.active {
  opacity: 1;
  pointer-events: auto;
  transform: scale(1) rotate(0deg);
}

/* ==========================================
   Gingham Card Layout (Stretched to Full Screen)
   ========================================== */
.card-gingham {
  width: 100vw;
  height: 100vh;
  max-width: 100vw;
  max-height: 100vh;
  border-radius: 0;
  border: none;
  padding: 20px; /* Checkered Border Border frame around browser window */
  
  /* Gingham Red-and-White Checkered Pattern background */
  background-color: #ffffff;
  background-image: 
    linear-gradient(90deg, rgba(234, 35, 43, 0.25) 50%, transparent 50%),
    linear-gradient(rgba(234, 35, 43, 0.25) 50%, transparent 50%);
  background-size: 24px 24px;
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  box-sizing: border-box;
}

.card-content {
  width: 100%;
  height: 100%;
  background-color: var(--cream-bg);
  border: 4px solid var(--dark-brown);
  border-radius: 16px;
  padding: 35px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  text-align: center;
  position: relative;
  overflow: hidden;
  box-shadow: inset 0 0 25px rgba(80, 56, 43, 0.08);
  box-sizing: border-box;
}

/* ==========================================
   Marker Handwriting & Text Styles
   ========================================== */
.marker-text {
  font-family: var(--font-marker);
  font-size: 2.8rem;
  color: var(--dark-brown);
  letter-spacing: 0.5px;
  line-height: 1.2;
}

.marker-question {
  font-family: var(--font-marker);
  font-size: 2rem;
  margin-top: 5px;
}

.red-glow {
  color: var(--red-theme);
  text-shadow: 1.5px 1.5px 0px rgba(255,255,255,0.8);
}

.text-red { color: var(--red-theme); }
.font-orange { color: var(--orange-theme); }
.font-blue { color: var(--blue-theme); }

/* Comic-styled Button */
.btn-checkered {
  font-family: var(--font-marker);
  font-size: 1.6rem;
  color: white;
  background-color: var(--red-theme);
  border: 3.5px solid var(--dark-brown);
  padding: 10px 35px;
  border-radius: 35px;
  cursor: pointer;
  transition: all 0.15s ease;
  box-shadow: 0 6px 0 var(--dark-brown);
  letter-spacing: 1px;
}

.btn-checkered:hover {
  background-color: #ff3c43;
}

.btn-checkered:active {
  transform: translateY(3px);
  box-shadow: 0 3px 0 var(--dark-brown);
}

.welcome-buttons {
  display: flex;
  gap: 30px;
  justify-content: center;
  align-items: center;
  margin-bottom: 5px;
  min-height: 65px;
  width: 100%;
}

/* Dynamic runaway button transition */
#btn-welcome-no {
  background-color: #795548;
  transition: transform 0.15s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

#btn-welcome-no:hover {
  background-color: #8d6e63;
}

/* ==========================================
   Sticker / Comic Decorations
   ========================================== */
.sticker-container {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 10px 0;
  z-index: 2;
}

.sticker {
  filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.15));
  transition: transform 0.3s ease;
  width: 220px;
  height: 220px;
}

.hover-bounce:hover .sticker {
  transform: scale(1.08) rotate(3deg);
}

/* Joke screen formatting */
.joke-quote {
  font-family: var(--font-letter);
  font-size: 1.8rem;
  font-weight: 700;
  margin-bottom: 15px;
  color: #795548;
}

/* Teasing GIF container styles */
.gif-container-excitement {
  width: 250px;
  height: 200px;
  border-radius: 12px;
  overflow: hidden;
  border: 3.5px solid var(--dark-brown);
  box-shadow: 0 8px 20px rgba(0,0,0,0.15);
  margin: 15px 0;
  background-color: #eee;
  display: flex;
  justify-content: center;
  align-items: center;
}

.joey-teasing-gif {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================
   Screen 4: Coffee Shop Counter (Pink Gift Boxes 3x Bigger)
   ========================================== */
.mugs-flex-container {
  display: flex;
  justify-content: space-around;
  align-items: flex-end;
  width: 100%;
  margin-top: 15px;
  flex-grow: 1;
}

.gift-box-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  cursor: pointer;
  transition: all 0.25s ease;
}

.gift-box-wrapper:hover {
  transform: translateY(-10px) scale(1.06);
}

.pink-gift-svg {
  filter: drop-shadow(0 8px 15px rgba(0,0,0,0.18));
  transition: transform 0.3s ease;
  width: 250px;
  height: 250px;
}

.gift-box-wrapper:hover .pink-gift-svg {
  animation: wiggleBox 0.5s ease-in-out infinite alternate;
}

@keyframes wiggleBox {
  0% { transform: rotate(-6deg); }
  100% { transform: rotate(6deg); }
}

.gift-desc {
  font-family: var(--font-marker);
  font-size: 1.5rem;
  margin-top: 12px;
  color: var(--dark-brown);
}

.phoebe-running-sticker {
  position: absolute;
  bottom: 0px;
  right: -10px;
  pointer-events: none;
}

.instruction-banner {
  font-family: var(--font-marker);
  font-size: 1.8rem;
  letter-spacing: 1px;
}

/* Back Button inside Cards */
.btn-card-back {
  position: absolute;
  top: 15px;
  left: 15px;
  background-color: var(--cream-bg);
  border: 2.5px solid var(--dark-brown);
  border-radius: 12px;
  padding: 6px 14px;
  font-family: var(--font-marker);
  font-size: 1rem;
  cursor: pointer;
  z-index: 50;
  box-shadow: 0 4px 0 var(--dark-brown);
}

.btn-card-back:hover {
  transform: translateY(2px);
  box-shadow: 0 2px 0 var(--dark-brown);
}

/* ==========================================
   Screen 5: Happy Sibling Card & Photo Box (Bigger Sizing)
   ========================================== */
.badge-ribbon {
  display: inline-flex;
  align-items: center;
  position: relative;
  margin-top: 10px;
}

.ribbon-label {
  background-color: var(--red-theme);
  color: white;
  font-family: var(--font-marker);
  font-size: 1.4rem;
  padding: 5px 24px;
  border: 3.5px solid var(--dark-brown);
  border-radius: 6px;
  z-index: 5;
  box-shadow: 0 4px 0 var(--dark-brown);
}

.ribbon-tail {
  position: absolute;
  top: 8px;
  width: 18px;
  height: 18px;
  background-color: #9d1116;
  border: 3px solid var(--dark-brown);
  z-index: 2;
}

.ribbon-tail.left {
  left: -10px;
  transform: rotate(45deg);
}

.ribbon-tail.right {
  right: -10px;
  transform: rotate(45deg);
}

/* Enlarged Photo Card on Page 4 */
.photo-upload-frame-large {
  width: 250px;
  height: 250px;
  background-color: white;
  border: 3.5px solid var(--dark-brown);
  padding: 10px 10px 25px 10px;
  box-shadow: 0 10px 22px rgba(0,0,0,0.12);
  transform: rotate(-3deg);
  position: relative;
  cursor: pointer;
  margin: 15px 0;
  transition: all 0.2s ease;
  box-sizing: border-box;
}

.photo-upload-frame-large:hover {
  transform: scale(1.04) rotate(0deg);
  box-shadow: 0 12px 30px rgba(0,0,0,0.18);
}

.hidden-file-input {
  display: none;
}

.photo-display-area {
  width: 100%;
  height: 100%;
  background-color: #eceff1;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  background-size: cover;
  background-position: center;
}

.placeholder-icon {
  text-align: center;
  color: #78909c;
}

.placeholder-icon i {
  font-size: 2.2rem;
  margin-bottom: 6px;
}

.placeholder-icon p {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.clip-decoration-large {
  position: absolute;
  top: -24px;
  left: calc(50% - 16px);
  font-size: 2.4rem;
  transform: rotate(15deg);
  z-index: 10;
}

.custom-card-text {
  font-family: var(--font-marker);
  font-size: 1.5rem;
  color: var(--dark-brown);
  margin-bottom: 15px;
  max-width: 480px;
  line-height: 1.3;
}

.pulse {
  animation: pulseButton 1.5s infinite alternate;
}

@keyframes pulseButton {
  0% { transform: scale(1); }
  100% { transform: scale(1.06); }
}

/* ==========================================
   Screen 6: Best Sister Award Certificate (Pookie Redesign)
   ========================================== */
.certificate-sheet {
  max-width: 620px;
  width: 100%;
  height: 95%;
  background-color: white;
  border: 4.5px solid var(--dark-brown);
  border-radius: 12px;
  padding: 10px;
  display: flex;
  margin: 0 auto;
  box-sizing: border-box;
}

.cert-pattern-border {
  border: 5px double #cc9c3d;
  width: 100%;
  height: 100%;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  position: relative;
  text-align: center;
  box-sizing: border-box;
}

.cert-main-title {
  font-family: var(--font-marker);
  font-size: 2.5rem;
  letter-spacing: 1px;
}

.cert-subtitle {
  font-size: 0.9rem;
  text-transform: uppercase;
  color: #666;
  letter-spacing: 2px;
  margin: 4px 0;
  font-weight: 800;
}

.cert-name-vinnu {
  font-family: var(--font-letter);
  font-size: 3.8rem;
  color: var(--purple-theme);
  font-weight: 800;
  margin: 5px 0;
  line-height: 1;
}

/* Pookie Stickers */
.cert-corner-sticker {
  position: absolute;
  font-size: 2.4rem;
  z-index: 10;
  filter: drop-shadow(0 4px 6px rgba(0,0,0,0.15));
  transition: transform 0.2s ease;
}

.cert-corner-sticker:hover {
  transform: scale(1.25);
}

.top-left-bow { top: -14px; left: -14px; transform: rotate(-15deg); }
.top-right-bow { top: -14px; right: -14px; transform: rotate(15deg); }
.bottom-left-lobster { bottom: -14px; left: -14px; transform: rotate(-10deg); }
.bottom-right-heart { bottom: -14px; right: -14px; transform: rotate(10deg); }

/* Floating pookie items */
.cert-float-sticker {
  position: absolute;
  font-size: 2.1rem;
  z-index: 8;
  filter: drop-shadow(0 3px 5px rgba(0,0,0,0.08));
  animation: floatPookie 3.5s infinite ease-in-out;
}

.fs-1 { top: 12%; left: 4%; animation-delay: 0s; }
.fs-2 { top: 12%; right: 4%; animation-delay: 0.5s; }
.fs-3 { bottom: 18%; left: 4%; animation-delay: 1s; }
.fs-4 { bottom: 18%; right: 4%; animation-delay: 1.5s; }

@keyframes floatPookie {
  0% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-7px) rotate(6deg); }
  100% { transform: translateY(0px) rotate(0deg); }
}

/* Flex layout inside cert */
.cert-flex-layout {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-around;
  gap: 20px;
  margin: 10px 0;
  flex-grow: 1;
}

.cert-gif-holder {
  width: 140px;
  height: 140px;
  border-radius: 10px;
  overflow: hidden;
  border: 3.5px solid var(--dark-brown);
  box-shadow: 0 6px 15px rgba(0,0,0,0.15);
  background-color: #fbf9f2;
  flex-shrink: 0;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.cert-dancing-gif {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: relative;
  z-index: 2;
}

.cert-gif-fallback {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #fbf9f2;
}

.cert-text-holder {
  flex: 1;
  text-align: left;
}

.cert-long-desc {
  font-size: 0.9rem;
  line-height: 1.45;
  color: #333;
  font-weight: 600;
}

/* Handwriting style for Manglish sweet notes inside certificate */
.font-manglish-cert {
  font-family: var(--font-letter);
  font-size: 1.65rem;
  font-weight: 700;
  color: #37474f;
  line-height: 1.35;
}

.cert-achievement-badge {
  font-family: var(--font-marker);
  font-size: 1.2rem;
  color: var(--orange-theme);
  margin-top: 8px;
  border: 2px dashed var(--orange-theme);
  padding: 4px 10px;
  border-radius: 6px;
  display: inline-block;
}

.cert-bottom-signatures {
  display: flex;
  justify-content: space-between;
  width: 100%;
  margin-top: 10px;
  padding: 0 20px;
}

.sig-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 35%;
}

.sig-col label {
  font-size: 0.75rem;
  text-transform: uppercase;
  color: #666;
  margin-top: 4px;
  font-weight: 800;
}

.written-sig {
  font-family: var(--font-letter);
  font-size: 1.8rem;
  color: var(--red-theme);
  border-bottom: 2px solid var(--dark-brown);
  width: 100%;
  display: block;
}

.date-stamp {
  font-size: 1.1rem;
  font-weight: 700;
  border-bottom: 2px solid var(--dark-brown);
  width: 100%;
  display: block;
  padding-bottom: 2px;
}

/* ==========================================
   Screen 7: Memories clothesline (Delete overlays)
   ========================================== */
.memories-title-letters {
  display: flex;
  gap: 10px;
  margin-top: 10px;
  margin-bottom: 25px;
}

.letter-box {
  width: 42px;
  height: 42px;
  border: 3.5px solid var(--dark-brown);
  border-radius: 6px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: var(--font-marker);
  font-size: 1.8rem;
  color: white;
  box-shadow: 0 4px 0 var(--dark-brown);
}

/* Friends styled letter box colors */
.letter-box.m { background-color: var(--red-theme); }
.letter-box.e { background-color: var(--blue-theme); }
.letter-box.m2 { background-color: var(--yellow-theme); }
.letter-box.o { background-color: var(--green-theme); }
.letter-box.r { background-color: var(--purple-theme); }
.letter-box.i { background-color: var(--orange-theme); }
.letter-box.e2 { background-color: var(--red-theme); }
.letter-box.s { background-color: var(--blue-theme); }

.clothesline-container {
  position: relative;
  width: 100%;
  margin: 30px 0;
  padding-top: 20px;
}

.rope-thread {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 6px;
  background-color: #8d6e63;
  border: 2.5px solid var(--dark-brown);
  border-radius: 4px;
}

.hanging-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 25px;
  padding: 10px 20px;
}

.hanging-card {
  background-color: white;
  border: 3px solid var(--dark-brown);
  padding: 8px 8px 18px 8px;
  box-shadow: 0 8px 18px rgba(0,0,0,0.18);
  transform-origin: top center;
  transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
  cursor: pointer;
  position: relative;
}

.hanging-card:hover {
  transform: scale(1.1) rotate(0deg) translateY(6px);
  z-index: 10;
}

.hanging-photo-box {
  width: 100%;
  aspect-ratio: 1;
  background-color: #eceff1;
  overflow: hidden;
  border: 1.5px solid #ccc;
  display: flex;
  justify-content: center;
  align-items: center;
  background-size: cover;
  background-position: center;
}

.camera-placeholder {
  color: #90a4ae;
  font-size: 2.2rem;
}

.hanging-card-caption {
  font-family: var(--font-letter);
  font-size: 1.25rem;
  font-weight: 700;
  margin-top: 10px;
  line-height: 1.2;
}

.peg {
  position: absolute;
  top: -16px;
  left: calc(50% - 11px);
  font-size: 1.5rem;
}

/* Polaroid image delete button */
.delete-polaroid-btn {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background-color: var(--red-theme);
  color: white;
  border: 1.5px solid var(--dark-brown);
  font-size: 0.9rem;
  font-weight: 800;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  box-shadow: 0 2px 4px rgba(0,0,0,0.15);
  transition: all 0.15s ease;
  z-index: 15;
}

.delete-polaroid-btn:hover {
  transform: scale(1.2);
  background-color: #ff3c43;
}

/* Alternating tilts for dynamic clothesline */
.hanging-card:nth-child(odd) { transform: rotate(-5deg); }
.hanging-card:nth-child(even) { transform: rotate(4deg); }

.memories-note-footer {
  font-family: var(--font-marker);
  font-size: 1.1rem;
  opacity: 0.7;
  margin-bottom: 10px;
}

/* Lightbox overlay for zoom */
.zoom-lightbox {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.85);
  z-index: 500;
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.zoom-lightbox:not(.hidden) {
  opacity: 1;
  pointer-events: auto;
}

.zoom-lightbox.hidden {
  display: none;
}

.close-zoom {
  position: absolute;
  top: 20px;
  right: 30px;
  font-size: 3rem;
  color: white;
  cursor: pointer;
}

.zoom-paper {
  background-color: white;
  padding: 20px 20px 45px 20px;
  border: 4px solid var(--dark-brown);
  box-shadow: 0 20px 40px rgba(0,0,0,0.5);
  max-width: 85%;
  max-height: 80%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.zoom-paper img {
  max-width: 100%;
  max-height: 400px;
  object-fit: contain;
  border: 1.5px solid #ccc;
}

#zoomed-in-caption {
  font-family: var(--font-marker);
  font-size: 2rem;
  margin-top: 15px;
  color: var(--dark-brown);
}

/* ==========================================
   Screen 8: Sibling Traits ("YOU ARE MY" - Brahmi update)
   ========================================== */
.traits-interactive-diagram {
  position: relative;
  width: 100%;
  height: 380px;
  margin: 15px 0;
  flex-grow: 1;
}

.traits-sibling-avatar {
  width: 160px;
  height: 220px;
  border-radius: 20px;
  border: 4px solid var(--dark-brown);
  background-color: white;
  box-shadow: 0 6px 15px rgba(0,0,0,0.15);
  position: absolute;
  top: calc(50% - 110px);
  left: calc(50% - 80px);
  cursor: pointer;
  overflow: hidden;
  z-index: 10;
  transition: transform 0.2s ease;
}

.traits-sibling-avatar:hover {
  transform: scale(1.05);
}

.avatar-image-box {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  background-size: cover;
  background-position: center 20%;
  color: #90a4ae;
  font-size: 2.2rem;
}

/* Radial Pointer Tags styling */
.bubble-pointer {
  position: absolute;
  cursor: pointer;
  z-index: 5;
  transition: all 0.2s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

.bubble-tag {
  color: white;
  font-family: var(--font-marker);
  font-size: 1.25rem;
  padding: 6px 16px;
  border-radius: 30px;
  border: 2.5px solid var(--dark-brown);
  white-space: nowrap;
  box-shadow: 0 4px 0 var(--dark-brown);
  display: block;
}

.bubble-pointer:hover {
  transform: scale(1.15) translateY(-3px);
  z-index: 8;
}

/* Desktop Pointer positioning */
.b-monica { top: 10%; left: 10%; }
.b-joey { top: 46%; left: 3%; }
.b-phoebe { top: 82%; left: 10%; }
.b-ross { top: 10%; right: 10%; }
.b-chandler { top: 46%; right: 3%; }
.b-rachel { top: 82%; right: 10%; }

/* Bubble colors */
.bg-red { background-color: var(--red-theme); }
.bg-orange { background-color: var(--orange-theme); }
.bg-blue { background-color: var(--blue-theme); }
.bg-yellow { background-color: var(--yellow-theme); color: var(--dark-brown); }
.bg-green { background-color: var(--green-theme); }
.bg-purple { background-color: var(--purple-theme); }

/* Tollywood Comedian Reaction Flex Panel */
.trait-info-panel-flex {
  width: 100%;
  background-color: white;
  border: 3px solid var(--dark-brown);
  border-radius: 12px;
  padding: 12px 20px;
  min-height: 110px;
  box-shadow: inset 0 0 10px rgba(0,0,0,0.03);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
}

.trait-panel-left {
  flex: 1;
  text-align: left;
}

.trait-panel-left h4 {
  font-family: var(--font-marker);
  font-size: 1.6rem;
  color: var(--red-theme);
  margin-bottom: 4px;
}

.trait-panel-left p {
  font-size: 0.95rem;
  line-height: 1.4;
  color: #444;
  font-weight: 700;
}

.trait-panel-right {
  width: 90px;
  height: 90px;
  border-radius: 8px;
  overflow: hidden;
  border: 2.5px solid var(--dark-brown);
  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  flex-shrink: 0;
  background-color: #eee;
}

.trait-comedian-gif {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================
   Screen 9: Notebook Letter Sheet
   ========================================== */
.letter-notebook-sheet {
  max-width: 720px;
  width: 100%;
  height: 95%;
  background-color: white;
  border: 4.5px solid var(--dark-brown);
  border-radius: 12px;
  padding: 20px;
  position: relative;
  overflow: hidden;
  margin: 0 auto;
  box-sizing: border-box;
}

/* Grid Notebook Lines effect */
.letter-grid-pattern {
  width: 100%;
  height: 100%;
  background-image: 
    linear-gradient(#e0f2f1 1.5px, transparent 1.5px),
    linear-gradient(90deg, #e0f2f1 1.5px, transparent 1.5px);
  background-size: 24px 24px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 15px;
  text-align: left;
  box-sizing: border-box;
}

.letter-salutation {
  font-family: var(--font-letter);
  font-size: 2.2rem;
  color: var(--red-theme);
  font-weight: 800;
  line-height: 1.1;
  border-bottom: 2px dashed #b2dfdb;
  padding-bottom: 8px;
}

.letter-main-text {
  font-family: var(--font-letter);
  font-size: 1.6rem;
  line-height: 1.5;
  color: #37474f;
  font-weight: 700;
  margin: 15px 0;
  flex-grow: 1;
}

.font-manglish-letter {
  font-size: 1.7rem;
  line-height: 1.45;
}

.letter-valediction {
  font-family: var(--font-letter);
  font-size: 1.5rem;
  color: #666;
  line-height: 1;
}

.letter-signature-mannu {
  font-family: var(--font-letter);
  font-size: 2.8rem;
  color: var(--blue-theme);
  font-weight: 800;
  margin-top: 5px;
  line-height: 1;
}

.bouquet-graphic {
  position: absolute;
  bottom: 20px;
  right: 25px;
  font-size: 4rem;
  animation: floatingFlower 2.5s infinite ease-in-out;
}

@keyframes floatingFlower {
  0% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-5px) rotate(5deg); }
  100% { transform: translateY(0px) rotate(0deg); }
}

/* ==========================================
   Vinnu Custom Logo and Typewriter cursor styles
   ========================================== */
.vinnu-logo-title {
  display: flex;
  justify-content: center;
  align-items: center;
  font-weight: 800;
  font-size: 3.5rem;
  letter-spacing: 4px;
  color: var(--dark-brown);
  text-transform: uppercase;
  margin-bottom: 5px;
  margin-top: 5px;
}

.vinnu-logo-title .dot {
  font-size: 2rem;
  margin: 0 6px;
  animation: pulseDot 1.4s infinite alternate;
  display: inline-block;
}

.vinnu-logo-title .red-dot { color: var(--red-theme); animation-delay: 0s; }
.vinnu-logo-title .blue-dot { color: var(--blue-theme); animation-delay: 0.4s; }
.vinnu-logo-title .yellow-dot { color: var(--yellow-theme); animation-delay: 0.8s; }

@keyframes pulseDot {
  0% { opacity: 0.35; transform: scale(0.85); }
  100% { opacity: 1; transform: scale(1.2); }
}

/* Typewriter cursor flashing */
.typewriter-container {
  min-height: 48px;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 10px;
}

#typewriter-welcome::after {
  content: '|';
  color: var(--orange-theme);
  animation: flashCursor 0.7s infinite alternate;
  margin-left: 4px;
  font-weight: bold;
}

@keyframes flashCursor {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

/* ==========================================
   Responsive Adaptations
   ========================================== */
@media (max-width: 768px) {
  .card-content {
    padding: 20px 15px;
  }
  .vinnu-logo-title {
    font-size: 2.2rem;
  }
  .vinnu-logo-title .dot {
    font-size: 1.3rem;
    margin: 0 2px;
  }
  .marker-text {
    font-size: 1.8rem;
  }
  .marker-question {
    font-size: 1.4rem;
  }
  .btn-checkered {
    font-size: 1.2rem;
    padding: 8px 24px;
  }
  .welcome-buttons {
    gap: 20px;
    min-height: 55px;
  }
  .sticker {
    width: 150px;
    height: 150px;
  }
  .gif-container-excitement {
    width: 180px;
    height: 150px;
  }
  .pink-gift-svg {
    width: 130px;
    height: 130px;
  }
  .gift-desc {
    font-size: 1.1rem;
  }
  .badge-ribbon {
    margin-top: 5px;
  }
  .photo-upload-frame-large {
    width: 150px;
    height: 150px;
    margin: 8px 0;
  }
  .clip-decoration-large {
    top: -16px;
    font-size: 1.6rem;
  }
  .custom-card-text {
    font-size: 1.05rem;
    margin-bottom: 8px;
  }
  .certificate-sheet {
    padding: 6px;
  }
  .cert-pattern-border {
    padding: 10px;
  }
  .cert-main-title {
    font-size: 1.6rem;
  }
  .cert-name-vinnu {
    font-size: 2.2rem;
  }
  .cert-flex-layout {
    flex-direction: column;
    gap: 10px;
  }
  .cert-gif-holder {
    width: 100px;
    height: 100px;
  }
  .cert-long-desc {
    font-size: 0.75rem;
    line-height: 1.3;
    text-align: center;
  }
  .cert-text-holder {
    text-align: center;
  }
  .font-manglish-cert {
    font-size: 1.25rem;
  }
  .cert-achievement-badge {
    font-size: 0.95rem;
  }
  .written-sig {
    font-size: 1.2rem;
  }
  .date-stamp {
    font-size: 0.85rem;
  }
  .hanging-grid {
    gap: 10px;
    padding: 5px;
  }
  .hanging-card {
    padding: 5px 5px 10px 5px;
  }
  .hanging-card-caption {
    font-size: 0.8rem;
  }
  .peg {
    top: -12px;
    font-size: 1.1rem;
  }
  .traits-interactive-diagram {
    height: 220px;
  }
  .traits-sibling-avatar {
    width: 100px;
    height: 140px;
    border-radius: 14px;
    top: calc(50% - 70px);
    left: calc(50% - 50px);
  }
  .bubble-tag {
    font-size: 0.75rem;
    padding: 4px 8px;
  }
  .b-monica { top: 2%; left: 2%; }
  .b-joey { top: 40%; left: 0%; }
  .b-phoebe { top: 78%; left: 2%; }
  .b-ross { top: 2%; right: 2%; }
  .b-chandler { top: 40%; right: 0%; }
  .b-rachel { top: 78%; right: 2%; }
  
  .trait-info-panel-flex {
    padding: 8px 12px;
    min-height: 90px;
  }
  .trait-panel-left h4 {
    font-size: 1.2rem;
  }
  .trait-panel-left p {
    font-size: 0.8rem;
  }
  .trait-panel-right {
    width: 65px;
    height: 65px;
  }
  
  .letter-salutation {
    font-size: 1.5rem;
  }
  .letter-main-text {
    font-size: 1.15rem;
    line-height: 1.45;
  }
  .font-manglish-letter {
    font-size: 1.25rem;
  }
  .letter-signature-mannu {
    font-size: 1.8rem;
  }
  .bouquet-graphic {
    font-size: 2.8rem;
  }
  
  .cert-corner-sticker {
    font-size: 1.6rem;
  }
  .top-left-bow { top: -8px; left: -8px; }
  .top-right-bow { top: -8px; right: -8px; }
  .bottom-left-lobster { bottom: -8px; left: -8px; }
  .bottom-right-heart { bottom: -8px; right: -8px; }
  .cert-float-sticker { font-size: 1.3rem; }
}

.static-display-only {
  cursor: default !important;
}
.static-display-only:hover {
  transform: rotate(-3deg) !important;
  box-shadow: 0 10px 22px rgba(0,0,0,0.12) !important;
}
.traits-sibling-avatar.static-display-only:hover {
  transform: scale(1) !important;
}

/* 3rd Polaroid positioning override to keep both faces visible */
.hanging-grid .hanging-card:nth-child(3) .hanging-photo-box {
  background-position: center 15% !important;
}
