/* The festival lives in the shared navigation and page canvas, not in page heroes. */
body.pyzen-occasion--diwali,
body.pyzen-occasion--chitragupt {
  --paper: #fffaf3;
  --paper-2: #fff3e7;
}
.pyzen-occasion--diwali .header__bar,
.pyzen-occasion--chitragupt .header__bar {
  border-color: rgba(244, 181, 85, .5);
  box-shadow: 0 18px 48px -18px rgba(42, 17, 21, .66), 0 0 0 1px rgba(228, 139, 54, .12), inset 0 1px 0 rgba(255, 225, 165, .2);
}

/* A rope of light and miniature clay diyas hangs below the floating header. */
.pyzen-occasion-toran {
  position: absolute;
  z-index: 3;
  top: calc(100% - 2px);
  left: 17px;
  right: 17px;
  height: 55px;
  display: flex;
  justify-content: space-around;
  pointer-events: none;
}
.pyzen-occasion-toran__cord {
  position: absolute;
  inset: -24px 0 34px;
  border-bottom: 2px solid rgba(236, 179, 104, .88);
  border-radius: 0 0 50% 50%;
  filter: drop-shadow(0 2px 5px rgba(250, 174, 85, .5));
}
.pyzen-occasion-toran__drop {
  position: relative;
  top: 4px;
  width: 30px;
  height: 49px;
}
.pyzen-occasion-toran__thread {
  position: absolute;
  left: 14px;
  top: 0;
  width: 1px;
  height: 27px;
  background: linear-gradient(#f6d5a4, #ad7250);
}
.pyzen-occasion-toran__light {
  position: absolute;
  left: 11px;
  top: 14px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #fff3bb;
  box-shadow: 0 0 8px 3px rgba(255, 195, 96, .85), 0 0 20px 8px rgba(249, 143, 52, .32);
  animation: pyzen-toran-glow 3s ease-in-out infinite alternate;
}
.pyzen-occasion-toran__drop svg {
  position: absolute;
  left: 1px;
  bottom: 0;
  width: 28px;
  height: 27px;
  filter: drop-shadow(0 2px 3px rgba(66, 21, 12, .55)) drop-shadow(0 0 5px rgba(255, 175, 55, .65));
}
.pyzen-occasion-mini__flame { fill: #ffb43f; }
.pyzen-occasion-mini__core { fill: #fff2bd; }
.pyzen-occasion-mini__clay { fill: #a94b2c; stroke: #df8b4a; stroke-width: 2; }
.pyzen-occasion-mini__rim { fill: none; stroke: #f4bf70; stroke-width: 3; }
.pyzen-occasion-toran__drop:nth-of-type(3n) { top: 10px; }
.pyzen-occasion-toran__drop:nth-of-type(4n) .pyzen-occasion-toran__light { animation-delay: 1.2s; }
.pyzen-occasion-toran__drop:nth-of-type(5n) .pyzen-occasion-toran__light { animation-delay: 2.1s; }
.pyzen-occasion-toran__seal {
  position: absolute;
  top: 7px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  min-height: 39px;
  min-width: 144px;
  padding: 4px 15px;
  border: 1px solid rgba(254, 215, 147, .9);
  border-radius: 11px;
  background: linear-gradient(120deg, #582519, #9e4727 52%, #582519);
  box-shadow: 0 5px 18px rgba(47, 18, 10, .35), inset 0 1px rgba(255, 244, 206, .3);
  color: #fff0c3;
  font-family: var(--f-label, sans-serif);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.1;
  white-space: nowrap;
  letter-spacing: .02em;
}
.pyzen-occasion-toran__seal span:last-child { color: #ffe2a5; font-size: 11px; }
.pyzen-occasion--chitragupt .pyzen-occasion-toran__seal { background: linear-gradient(110deg, #5d3244, #8e4b40 48%, #5d3244); }

/* Corner diyas stay visible from the first section; rangoli fades in later. */
.pyzen-occasion-ambient {
  position: fixed;
  z-index: 45;
  inset: 0;
  pointer-events: none;
}
.pyzen-occasion-ambient__left,
.pyzen-occasion-ambient__right { position: absolute; bottom: 6%; width: clamp(150px, 18vw, 270px); color: #c76c28; }
.pyzen-occasion-ambient__left { left: max(-125px, -9vw); transform: rotate(-9deg); opacity: 0; transition: opacity .7s ease; }
.pyzen-occasion-ambient__right { right: max(-115px, -8vw); transform: rotate(9deg); opacity: 0; transition: opacity .7s ease; }
.pyzen-occasion-active-scroll .pyzen-occasion-ambient__left { opacity: .27; }
.pyzen-occasion-active-scroll .pyzen-occasion-ambient__right { opacity: .32; }
.pyzen-occasion-rangoli,
.pyzen-occasion-pen { display: block; width: 100%; height: auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.pyzen-occasion-corner { position: absolute; bottom: 20px; width: clamp(105px, 12vw, 158px); height: 112px; }
.pyzen-occasion-corner--left { left: 8px; }
.pyzen-occasion-corner--right { right: 8px; bottom: 100px; }
.pyzen-occasion-corner::before { content: ""; position: absolute; inset: 12% -12% -8%; border-radius: 50%; background: radial-gradient(ellipse, rgba(255, 169, 58, .3), transparent 65%); filter: blur(8px); }
.pyzen-occasion-corner__float { position: relative; width: 100%; filter: drop-shadow(0 7px 16px rgba(120, 43, 16, .4)) drop-shadow(0 0 22px rgba(255, 160, 50, .35)); animation: pyzen-diya-float 4.2s ease-in-out infinite alternate; }
.pyzen-occasion-corner--right .pyzen-occasion-corner__float { animation-delay: -2s; }
.pyzen-occasion-fireworks { position: absolute; inset: 0; z-index: 2; display: block; width: 100%; height: 100%; }
.pyzen-occasion-study { position: absolute; inset: 0; overflow: hidden; }
.pyzen-occasion-study__item { position: absolute; display: block; width: clamp(110px, 10vw, 145px); opacity: .88; filter: drop-shadow(0 0 9px rgba(255, 213, 151, .48)) drop-shadow(0 7px 10px rgba(65, 32, 24, .24)); animation: pyzen-study-drift var(--duration, 8s) ease-in-out var(--delay, 0s) infinite alternate; }
.pyzen-occasion-study__item svg { display: block; width: 100%; height: auto; overflow: visible; }
.pyzen-study__paper { fill: #fff2d8; stroke: #aa745a; stroke-width: 2.5; stroke-linejoin: round; }
.pyzen-study__fold { fill: none; stroke: #aa745a; stroke-width: 2; }
.pyzen-study__line { fill: none; stroke: #b58e7d; stroke-width: 2; stroke-linecap: round; }
.pyzen-study__inkpot { fill: #603344; stroke: #d3a36c; stroke-width: 2.5; stroke-linejoin: round; }
.pyzen-study__ink-neck { fill: #824b53; stroke: #e7b984; stroke-width: 2; }
.pyzen-study__ink-rim { fill: #d7a565; stroke: #f4d3a5; stroke-width: 2; }
.pyzen-study__ink-label { fill: #f5dfb7; stroke: #a66f50; stroke-width: 2; }
.pyzen-study__ink-mark { fill: none; stroke: #70434a; stroke-width: 2; stroke-linecap: round; }
.pyzen-study__pen-cap { fill: #4d2c3d; stroke: #e5ae70; stroke-width: 2; stroke-linejoin: round; }
.pyzen-study__pen-clip { fill: none; stroke: #ffe0a5; stroke-width: 3; stroke-linecap: round; }
.pyzen-study__pen-band { fill: none; stroke: #ffe0a5; stroke-width: 3; }
.pyzen-study__pen-body { fill: #703c4a; stroke: #e4b57c; stroke-width: 2.5; stroke-linejoin: round; }
.pyzen-study__pen-shine { fill: none; stroke: #f2d6a6; stroke-width: 2; stroke-linecap: round; }
.pyzen-study__pen-nib { fill: #d9a563; stroke: #6d4147; stroke-width: 2.5; stroke-linejoin: round; }
.pyzen-study__pen-slit { fill: none; stroke: #7a5149; stroke-width: 1.5; }
.pyzen-study__pen-eye { fill: #fff0cb; stroke: #7a5149; stroke-width: 1; }
.pyzen-occasion-study__item--1 { left: 42%; top: 12%; --duration: 9s; --delay: -2s; --turn: -13deg; }
.pyzen-occasion-study__item--2 { left: 78%; top: 72%; --duration: 11s; --delay: -6s; --turn: 11deg; }
.pyzen-occasion-study__item--3 { left: 88%; top: 8%; --duration: 8s; --delay: -4s; --turn: -9deg; }
.pyzen-occasion-study__item--4 { left: 50%; top: 76%; --duration: 10s; --delay: -7s; --turn: 14deg; }
.pyzen-occasion-study__item--5 { left: 86%; top: 35%; --duration: 12s; --delay: -3s; --turn: 12deg; }
.pyzen-occasion-study__item--6 { left: 2%; top: 86%; --duration: 9s; --delay: -5s; --turn: -10deg; }
.pyzen-occasion--chitragupt .pyzen-occasion-ambient__left { color: #935f53; }
.pyzen-occasion--chitragupt .pyzen-occasion-ambient__right { color: #b38b58; }

/* A full-width celebration closes every page before the normal footer. */
.pyzen-occasion-finale {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 390px;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr);
  align-items: center;
  gap: 20px;
  margin: clamp(50px, 6vw, 90px) var(--inset, 14px) 0;
  border: 1px solid rgba(244, 191, 113, .65);
  border-radius: var(--r-xl, 32px);
  background: radial-gradient(circle at 84% 52%, rgba(255, 190, 80, .26), transparent 31%), radial-gradient(circle at 4% 18%, rgba(252, 99, 63, .22), transparent 35%), linear-gradient(116deg, #371629 0%, #60252e 45%, #78371e 100%);
  box-shadow: 0 25px 70px -34px rgba(63, 22, 33, .5), inset 0 1px rgba(255, 225, 167, .23);
  color: #fff8ed;
}
.pyzen-occasion-finale::before {
  content: "";
  position: absolute;
  inset: 17px;
  border: 1px solid rgba(255, 218, 160, .28);
  border-radius: calc(var(--r-xl, 32px) - 10px);
  pointer-events: none;
}
.pyzen-occasion-finale::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: radial-gradient(circle, rgba(255, 223, 162, .75) 1.3px, transparent 2px), radial-gradient(circle, rgba(255, 178, 106, .4) 1px, transparent 2px);
  background-size: 115px 98px, 83px 111px;
  background-position: 14px 21px, 57px 69px;
  opacity: .65;
  pointer-events: none;
}
.pyzen-occasion-finale__pattern { position: absolute; z-index: -1; left: -150px; bottom: -230px; width: 430px; color: #ffd495; opacity: .16; }
.pyzen-occasion-finale__copy { position: relative; z-index: 2; padding: clamp(45px, 6vw, 86px) 0 clamp(45px, 6vw, 86px) clamp(38px, 7vw, 112px); }
.pyzen-occasion-finale__eyebrow { margin-bottom: 14px; color: #ffce8d; font-family: var(--f-label, sans-serif); font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.pyzen-occasion-finale__hindi { margin-bottom: 13px; color: #ffe1a0; font-family: var(--f-display, sans-serif); font-size: clamp(39px, 5.7vw, 82px); font-weight: 700; line-height: 1.05; letter-spacing: -.025em; text-shadow: 0 6px 30px rgba(255, 171, 75, .32); }
.pyzen-occasion-finale h2 { max-width: 650px; color: #fffaf2; font-size: clamp(25px, 3vw, 44px); line-height: 1.1; }
.pyzen-occasion-finale__description { max-width: 560px; margin-top: 17px; color: rgba(255, 240, 222, .84); font-size: clamp(15px, 1.3vw, 19px); line-height: 1.55; }
.pyzen-occasion-finale__art { position: relative; align-self: stretch; display: grid; place-items: center; min-height: 350px; padding-right: 5%; color: rgba(255, 216, 145, .72); }
.pyzen-occasion-finale__art > .pyzen-occasion-rangoli { width: min(35vw, 410px); animation: pyzen-rangoli-breathe 9s ease-in-out infinite alternate; }
.pyzen-occasion-finale__lamp { position: absolute; width: clamp(100px, 13vw, 174px); filter: drop-shadow(0 0 24px rgba(255, 155, 53, .43)); }
.pyzen-occasion-finale__lamp--main { left: 50%; top: 46%; transform: translateX(-50%); }
.pyzen-occasion-finale__lamp--left { left: 14%; top: 59%; transform: scale(.65); opacity: .82; }
.pyzen-occasion-finale__lamp--right { right: 11%; top: 59%; transform: scale(.65); opacity: .82; }
.pyzen-occasion-finale__art > .pyzen-occasion-pen { width: min(32vw, 390px); color: rgba(255, 221, 170, .86); filter: drop-shadow(0 0 20px rgba(255, 192, 123, .3)); }
.pyzen-occasion-finale__art > .pyzen-study-set { width: min(31vw, 350px); height: auto; filter: drop-shadow(0 0 23px rgba(255, 192, 123, .3)); }
.pyzen-occasion--chitragupt .pyzen-occasion-finale { background: radial-gradient(circle at 84% 50%, rgba(239, 176, 99, .23), transparent 32%), linear-gradient(118deg, #241930, #493048 52%, #6d3c37); }

.pyzen-diya { display: block; width: 100%; height: auto; }
.pyzen-diya__glow { fill: rgba(255, 169, 63, .25); filter: blur(15px); }
.pyzen-diya__flame { fill: #ffae35; filter: drop-shadow(0 0 8px #ffad3d); animation: pyzen-diya-flame 2.2s ease-in-out infinite alternate; transform-origin: 90px 66px; }
.pyzen-diya__flame-core { fill: #fff2b3; animation: pyzen-diya-flame 1.8s ease-in-out infinite alternate-reverse; transform-origin: 90px 53px; }
.pyzen-diya__wick { fill: none; stroke: #3f2418; stroke-width: 3; stroke-linecap: round; }
.pyzen-diya__bowl { fill: #a34829; stroke: #d27c43; stroke-width: 3; }
.pyzen-diya__oil { fill: #5a2b20; stroke: #df9551; stroke-width: 3; }
.pyzen-diya__rim { fill: none; stroke: #f7be70; stroke-width: 5; stroke-linecap: round; }
.pyzen-diya__band { fill: none; stroke: #e8a65e; stroke-width: 2; opacity: .9; }
.pyzen-diya__petals { fill: none; stroke: #f6c477; stroke-width: 2; stroke-linecap: round; }
.pyzen-diya__dot { fill: #f5c378; }

@keyframes pyzen-toran-glow { to { opacity: .58; box-shadow: 0 0 5px 1px rgba(255, 193, 89, .65), 0 0 12px 4px rgba(247, 140, 43, .2); } }
@keyframes pyzen-rangoli-breathe { to { transform: scale(1.04) rotate(4deg); opacity: .72; } }
@keyframes pyzen-diya-flame { to { transform: scale(.86, 1.13) rotate(4deg); opacity: .85; } }
@keyframes pyzen-diya-float { to { transform: translateY(-11px) rotate(3deg); } }
@keyframes pyzen-study-drift { from { transform: translate3d(-7px, 13px, 0) rotate(var(--turn)); } to { transform: translate3d(13px, -20px, 0) rotate(calc(var(--turn) + 12deg)); } }

@media (max-width: 900px) {
  .pyzen-occasion-toran__drop:nth-of-type(2n) { display: none; }
  .pyzen-occasion-finale { grid-template-columns: 1fr minmax(230px, .8fr); }
  .pyzen-occasion-finale__copy { padding-left: 48px; }
}
@media (max-width: 700px) {
  .pyzen-occasion--diwali .hero.vshow .hero__copy,
  .pyzen-occasion--chitragupt .hero.vshow .hero__copy { transform: translateY(24px); }
  .pyzen-occasion-toran { left: 14px; right: 14px; height: 47px; }
  .pyzen-occasion-toran__drop { width: 23px; height: 42px; }
  .pyzen-occasion-toran__drop svg { width: 22px; height: 22px; }
  .pyzen-occasion-toran__thread { left: 11px; height: 23px; }
  .pyzen-occasion-toran__light { left: 8px; }
  .pyzen-occasion-toran__seal { top: 4px; min-height: 36px; min-width: 127px; padding: 3px 9px; font-size: 10px; }
  .pyzen-occasion-toran__seal span:last-child { font-size: 9px; }
  .pyzen-occasion-ambient__left { display: none; }
  .pyzen-occasion-ambient__right { width: 115px; right: -53px; bottom: 8%; }
  .pyzen-occasion-active-scroll .pyzen-occasion-ambient__right { opacity: .4; }
  .pyzen-occasion-corner { width: 78px; height: 65px; bottom: 16px; }
  .pyzen-occasion-corner--left { left: 6px; }
  .pyzen-occasion-corner--right { right: 6px; }
  .pyzen-occasion-study__item { width: 82px; opacity: 1; }
  .pyzen-occasion-study__item--1,
  .pyzen-occasion-study__item--2,
  .pyzen-occasion-study__item--3,
  .pyzen-occasion-study__item--6 { display: none; }
  .pyzen-occasion-study__item--4 { left: 74%; top: 84%; }
  .pyzen-occasion-study__item--5 { left: 76%; top: 25%; }
  .pyzen-occasion-finale { grid-template-columns: 1fr; gap: 0; }
  .pyzen-occasion-finale__copy { padding: 47px 30px 0; text-align: center; }
  .pyzen-occasion-finale__art { min-height: 260px; padding: 0; }
  .pyzen-occasion-finale__art > .pyzen-occasion-rangoli,
  .pyzen-occasion-finale__art > .pyzen-occasion-pen { width: min(67vw, 270px); }
  .pyzen-occasion-finale__art > .pyzen-study-set { width: min(66vw, 260px); }
  .pyzen-occasion-finale__lamp { width: 115px; }
  .pyzen-occasion-finale__lamp--main { top: 43%; }
  .pyzen-occasion-finale__lamp--left { left: 14%; top: 52%; }
  .pyzen-occasion-finale__lamp--right { right: 14%; top: 52%; }
  .pyzen-occasion-finale__description { margin-left: auto; margin-right: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .pyzen-occasion-toran__light,
  .pyzen-occasion-finale__art > .pyzen-occasion-rangoli,
  .pyzen-occasion-corner__float,
  .pyzen-diya__flame,
  .pyzen-diya__flame-core { animation: none !important; }
  .pyzen-occasion-fireworks,
  .pyzen-occasion-study__item { animation: none !important; }
  .pyzen-occasion-fireworks { display: none; }
  .pyzen-occasion-ambient__left,
  .pyzen-occasion-ambient__right { transition: none; }
}
