body{
	overflow:hidden;
	background-color:#fcfcfc;
	margin:0;
	padding:0;
	position: fixed;
	width: 100%;
	height: 100%;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: none;
	touch-action: pan-y pinch-zoom;
}

.magazine-viewport {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    touch-action: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.magazine-viewport .container{
	position:absolute;
	top:50%;
	left:50%;
	width:1200px;
	height:900px;
	margin:auto;
}

.magazine-viewport .magazine{
	width:1200px;
	height:900px;
	left:-600px;
	top:-450px;
}

.magazine-viewport .page{
	width:600px;
	height:900px;
	background-color:transparent;
}

.magazine-viewport .zoomer .region{
	display:none;
}

.magazine-viewport .zoom-in .region{
	display:none;
}

.magazine .region{
	position:absolute;
	overflow:hidden;
	background:#0066FF;
	opacity:0.2;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
	cursor:pointer;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .region:hover{
	opacity:0.5;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
	filter: alpha(opacity=50);
}

.magazine .region.zoom{
	opacity:0.01;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
	filter: alpha(opacity=1);
}

.magazine .region.zoom:hover{
	opacity:0.2;
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
	filter: alpha(opacity=20);
}

.magazine .page{
	-webkit-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-moz-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-ms-box-shadow:0 0 20px rgba(0,0,0,0.2);
	-o-box-shadow:0 0 20px rgba(0,0,0,0.2);
	box-shadow:0 0 20px rgba(0,0,0,0.2);
}

.magazine-viewport .page img{
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	margin:0;
	filter: none;
	image-rendering: auto;
	color-adjust: exact;
	-webkit-color-adjust: exact;
}

.magazine-viewport .loader{
	background-image:url(../pics/loader.gif);
	width:22px;
	height:22px;
	position:absolute;
	top:280px;
	left:219px;
}

.magazine-viewport .shadow{
	-webkit-transition: -webkit-box-shadow 0.5s;
	-moz-transition: -moz-box-shadow 0.5s;
	-o-transition: -webkit-box-shadow 0.5s;
	-ms-transition: -ms-box-shadow 0.5s;

	-webkit-box-shadow:0 0 20px #ccc;
	-moz-box-shadow:0 0 20px #ccc;
	-o-box-shadow:0 0 20px #ccc;
	-ms-box-shadow:0 0 20px #ccc;
	box-shadow:0 0 20px #ccc;
}

.magazine-viewport .next-button,
.magazine-viewport .previous-button{
	width:22px;
	height:600px;
	position:absolute;
	top:0;
}

.magazine-viewport .next-button{
	right:-22px;
	-webkit-border-radius:0 15px 15px 0;
	-moz-border-radius:0 15px 15px 0;
	-ms-border-radius:0 15px 15px 0;
	-o-border-radius:0 15px 15px 0;
	border-radius:0 15px 15px 0;
}

.magazine-viewport .previous-button{
	left:-22px;
	-webkit-border-radius:15px 0 0 15px;
	-moz-border-radius:15px 0 0 15px;
	-ms-border-radius:15px 0 0 15px;
	-o-border-radius:15px 0 0 15px;
	border-radius:15px 0 0 15px;
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .next-button-hover{
	background-color:rgba(0,0,0, 0.2);
}

.magazine-viewport .previous-button-hover,
.magazine-viewport .previous-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-4px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .previous-button-down,
.magazine-viewport .next-button-down{
	background-color:rgba(0,0,0, 0.4);
}

.magazine-viewport .next-button-hover,
.magazine-viewport .next-button-down{
	background-image:url(../pics/arrows.png);
	background-position:-38px 284px;
	background-repeat:no-repeat;
}

.magazine-viewport .zoom-in .next-button,
.magazine-viewport .zoom-in .previous-button{
	display:none;
}

.animated{
	-webkit-transition:margin-left 0.5s;
	-moz-transition:margin-left 0.5s;
	-ms-transition:margin-left 0.5s;
	-o-transition:margin-left 0.5s;
	transition:margin-left 0.5s;
}

.magazine-viewport {
    position: relative;
}

.esc{
	position: absolute;
	top:10px;
	left:0;
	width:100%;
	height:40px;
	z-index:10000;
}

.esc > div{
	width:140px;
	height:30px;
	margin:auto;
	background:rgba(0,0,0,0.5);
	text-align:center;
	font:12px arial;
	line-height:30px;
	color:white;
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	-ms-border-radius:10px;
	-o-border-radius:10px;
	border-radius:10px;
}

.made{
	position:absolute;
	top:0;
	left:0;
	width:100%;
	font: 14px arial;
	line-height:40px;
	color:#666;
	text-align:center;
	z-index:10;
}

.get-now{
	text-decoration:none;
	margin:0;
	padding:5px 20px;
	color:white;
	text-shadow:0 -1px 0 #3D561F;
	border:1px solid #4D682B;
	background-color:#657948;

	background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #82A353),  color-stop(0.5, #62843C), color-stop(0.51,  #5B7E32), color-stop(1,  #476928));
	background:-webkit-linear-gradient(top, #82A353 0%, #62843C 50%, #5B7E32 51%, #476928 100%);
	background:-moz-linear-gradient(top, #82A353 0%, #62843C 50%, #5B7E32 51%, #476928 100%);
	background:-ms-linear-gradient(top, #82A353 0%, #62843C 50%, #5B7E32 51%, #476928 100%);
	background:-o-linear-gradient(top, #82A353 0%, #62843C 50%, #5B7E32 51%, #476928 100%);
	background:linear-gradient(top, #82A353 0%, #62843C 50%, #5B7E32 51%, #476928 100%);

	-webkit-box-shadow:inset 0 1px 1px #9ECF7A, inset 0 -1px 1px #355828;
	-moz-box-shadow:inset 0 1px 1px #9ECF7A, inset 0 -1px 1px #355828;
	-o-box-shadow:inset 0 1px 1px #9ECF7A, inset 0 -1px 1px #355828;
	-ms-box-shadow:inset 0 1px 1px #9ECF7A, inset 0 -1px 1px #355828;
	box-shadow:inset 0 1px 1px #9ECF7A, inset 0 -1px 1px #355828;

	-webkit-border-radius:20px;
	-moz-border-radius:20px;
	-ms-border-radius:20px;
	-o-border-radius:20px;
	border-radius:20px;
}


.get-now:hover{
	border:1px solid #3F5228;
	text-decoration:none;

	background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #688939), color-stop(1,  #5B6D40));
	background:-webkit-linear-gradient(top, #688939, #5B6D40);
	background:-moz-linear-gradient(top, #688939, #5B6D40);
	background:-ms-linear-gradient(top, #688939, #5B6D40);
	background:-o-linear-gradient(top, #688939, #5B6D40);
	background:linear-gradient(top, #688939, #5B6D40);
}

.get-now:active{
	border:1px solid #243017;

	background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #577330), color-stop(1,  #4C5B35));
	background:-webkit-linear-gradient(top, #577330, #4C5B35);
	background:-moz-linear-gradient(top, #577330, #4C5B35);
	background:-ms-linear-gradient(top, #577330, #4C5B35);
	background:-o-linear-gradient(top, #577330, #4C5B35);
	background:linear-gradient(top, #577330, #4C5B35);
}


.album-slider{
    position: absolute;
    left: 50%;
    bottom: 10px;              
    transform: translateX(-50%);
    width: min(92vw, 1024px);
    display: flex;
    align-items: center;
    gap: 12px;
    z-index: 10;
}
.album-slider input[type="range"]{
    flex: 1;
}

.album-slider{
    transform: translateX(-50%) scale(0.7);
    transform-origin: center bottom;
}

@media (orientation: landscape) and (max-height: 500px) {
    .album-slider {
        bottom: 3px;
    }
}

@media (max-width: 480px) {
    .album-slider{
        bottom: 200px; /* was 10px */
    }
}

/* Floating hearts effect (appended) */
.hearts{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 120px;
  height: 70%;
  pointer-events: none;
  z-index: 999;
}

.hearts.left{ left: 8px; }
.hearts.right{ right: 8px; left: auto; }

.heart{
  position: absolute;
  bottom: 0;
  left: 50%;
  width: var(--heart-size, 18px);
  height: var(--heart-size, 18px);
  background: var(--heart-color, #ff6b6b);
  transform: translateX(-50%) rotate(45deg);
  border-radius: 2px;
  opacity: 0;
  animation-name: heartFloat;
  animation-timing-function: linear;
  animation-iteration-count: 1;
  will-change: transform, opacity;
}

.heart::before,
.heart::after{
  content: "";
  position: absolute;
  width: calc(var(--heart-size, 18px));
  height: calc(var(--heart-size, 18px));
  background: var(--heart-color, #ff6b6b);
  border-radius: 50%;
}

.heart::before{
  top: calc(-0.5 * var(--heart-size, 18px));
  left: 0;
}

.heart::after{
  top: 0;
  left: calc(0.5 * var(--heart-size, 18px));
}

@keyframes heartFloat{
  0%{
    transform: translateX(-50%) translateY(0) rotate(45deg) scale(1);
    opacity: 1;
  }
  100%{
    transform: translateX(calc(-50% + var(--drift, 0px))) translateY(-320px) rotate(45deg) scale(0.7);
    opacity: 0;
  }
}

/* Balloons effect (appended) */
.balloons{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 140px;
  height: 80%;
  pointer-events: none;
  z-index: 998; /* slightly below hearts */
}

.balloons.left{ left: 4px; }
.balloons.right{ right: 4px; left: auto; }

.balloon{
  position: absolute;
  bottom: 0;
  left: 50%;
  width: var(--balloon-size, 40px);
  height: var(--balloon-size, 50px);
  background: var(--balloon-color, #ff7b7b);
  border-radius: 50% 50% 45% 45% / 60% 60% 40% 40%;
  transform: translateX(-50%) translateY(0) scale(1);
  opacity: 0;
  box-shadow: inset -6px -8px 12px rgba(255,255,255,0.08), 0 6px 14px rgba(0,0,0,0.08);
  animation-name: balloonFloat;
  animation-timing-function: linear;
  animation-iteration-count: 1;
  will-change: transform, opacity;
}

.balloon::after{
  /* string */
  content: "";
  position: absolute;
  left: 50%;
  top: calc(var(--balloon-size, 40px) - 4px);
  transform: translateX(-50%);
  width: 2px;
  height: 36px;
  background: rgba(0,0,0,0.12);
  border-radius: 1px;
}

@keyframes balloonFloat{
  0%{
    transform: translateX(-50%) translateY(0) scale(1);
    opacity: 1;
  }
  100%{
    transform: translateX(calc(-50% + var(--drift, 0px))) translateY(-420px) scale(0.95);
    opacity: 0;
  }
}

/* keep balloons hidden on narrow screens */
@media (max-width: 800px){
  .balloons{ 
    display: none !important; 
    visibility: hidden !important;
    opacity: 0 !important;
  }
  .balloon {
    display: none !important;
    visibility: hidden !important;
  }
}

/* small responsive tweak so hearts don't overlap content on narrow screens */
@media (max-width: 800px){
  .hearts{ 
    display: none !important; 
    visibility: hidden !important;
    opacity: 0 !important;
  }
}

/* Mobile portrait: show subtle hearts near top, keep balloons hidden */
@media (orientation: portrait) and (max-width: 480px) {
  .balloons{ 
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
  }
  .balloon {
    display: none !important;
    visibility: hidden !important;
  }

  .hearts{
    display: block; /* override previous hide */
    top: 6%;
    transform: translateY(0);
    width: 96px;
    height: 32%;
    z-index: 1001;
    pointer-events: none;
  }

  .hearts.left{ left: 6px; }
  .hearts.right{ right: 6px; left: auto; }

  /* use a gentler, shorter float on phones so hearts don't travel too far */
  .hearts .heart{
    animation-name: heartFloatMobile;
    animation-timing-function: linear;
  }

  @keyframes heartFloatMobile{
    0%{
      transform: translateX(-50%) translateY(0) rotate(45deg) scale(1);
      opacity: 1;
    }
    100%{
      transform: translateX(calc(-50% + var(--drift, 0px))) translateY(-180px) rotate(45deg) scale(0.7);
      opacity: 0;
    }
  }

  /* nudge slider a bit higher so it doesn't overlap floating hearts */
  .album-slider{
    bottom: 14px; /* keep it visible but not touching hearts */
    transform: translateX(-50%) scale(0.8);
  }
}

/* Ngăn chặn kéo/cuộn không mong muốn trên mobile */
html {
  position: fixed;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: none;
}

* {
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
}

/* Đảm bảo magazine viewport không bị kéo ra ngoài */
.magazine-viewport,
.magazine-viewport .container,
.magazine {
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Ngăn chặn zoom và kéo trên các phần tử tương tác */
button, a, .next-button, .previous-button {
  touch-action: manipulation;
  -webkit-user-select: none;
  user-select: none;
}

/* Đặc biệt cho mobile - ngăn rubber band effect */
@media (max-width: 800px) {
  html, body {
    position: fixed;
    overflow: hidden;
    width: 100%;
    height: 100%;
    touch-action: none;
  }
  
  .magazine-viewport {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    overflow: hidden !important;
    touch-action: pan-x pinch-zoom;
  }
  
  /* Chỉ cho phép tương tác với magazine, không với background */
  .magazine {
    touch-action: pan-x pinch-zoom;
  }
}