:root {
  --feiring-ease: var(--ease, cubic-bezier(.2,.8,.2,1));
  --feiring-banner-h: 44px;
}

.holiday-banner {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 408;
  padding: 11px 48px 11px 20px;
  text-align: center;
  font-family: var(--serif, 'Instrument Serif', serif);
  font-style: italic;
  letter-spacing: 0.5px;
  font-size: 17px;
  line-height: 1.2;
  box-shadow: 0 2px 12px rgba(0,0,0,0.25);
  transform: translateY(-100%);
  transition: transform .55s var(--feiring-ease), opacity .4s ease;
  opacity: 0;
}
.holiday-banner.show {
  display: block;
}
.holiday-banner.in {
  transform: translateY(0);
  opacity: 1;
}
.holiday-banner.out {
  opacity: 0;
  transform: translateY(-12px);
}
.holiday-banner__close {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px; height: 26px;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.25);
  border-radius: 50%;
  color: inherit;
  font-size: 14px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .2s ease, transform .2s ease;
}
.holiday-banner__close:hover {
  background: rgba(255,255,255,0.3);
  transform: translateY(-50%) scale(1.08);
}

.banner-jul       { background: #1a4d2e; color: #f0ead6; }
.banner-nyttaar   { background: linear-gradient(90deg, #0a0e2a 0%, #1a1340 100%); color: #f5d878; }
.banner-valentin  { background: linear-gradient(90deg, #7a1c3d 0%, #a82455 100%); color: #ffd9e0; }
.banner-paske     { background: #4a7a3e; color: #fff8d6; }
.banner-17mai     { background: linear-gradient(90deg, #BA0C2F 0%, #BA0C2F 33%, #FFFFFF 33%, #FFFFFF 66%, #00205B 66%, #00205B 100%); color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,0.35); }
.banner-eksamen   { background: var(--rik-cream, #EAE1CE); color: var(--rik-blue-dark, #003888); box-shadow: 0 2px 16px rgba(234,225,206,0.25); }
.banner-sankthans { background: linear-gradient(90deg, #3a1f10 0%, #5a3018 100%); color: #ffb766; }
.banner-fadder    { background: var(--rik-blue, #004AAD); color: var(--rik-cream, #EAE1CE); }
.banner-semester  { background: var(--rik-cream-2, #f3ecdc); color: var(--rik-blue-dark, #003888); box-shadow: 0 2px 16px rgba(243,236,220,0.25); }
.banner-halloween { background: linear-gradient(90deg, #2a0a3a 0%, #441a55 100%); color: #ff8c42; }

.holiday-banner__text {
  display: inline-block;
  position: relative;
}

body[class*="holiday-"]::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: 0;
  transition: opacity 1.2s ease;
}
body.is-loaded[class*="holiday-"]::after {
  opacity: 1;
}
body.holiday-jul::after       { background: radial-gradient(ellipse at top, rgba(180,220,255,0.08) 0%, transparent 60%); }
body.holiday-nyttaar::after   { background: radial-gradient(ellipse at top, rgba(245,216,120,0.08) 0%, transparent 65%); }
body.holiday-valentin::after  { background: radial-gradient(ellipse at center, rgba(255,153,184,0.06) 0%, transparent 70%); }
body.holiday-paske::after     { background: radial-gradient(ellipse at top, rgba(180,230,160,0.07) 0%, transparent 60%); }
body.holiday-17mai::after     { background: radial-gradient(ellipse at top, rgba(186,12,47,0.05) 0%, transparent 55%); }
body.holiday-eksamen::after   { background: radial-gradient(ellipse at top, rgba(234,225,206,0.05) 0%, transparent 70%); }
body.holiday-sankthans::after { background: radial-gradient(ellipse at bottom, rgba(255,165,80,0.10) 0%, transparent 55%); }
body.holiday-fadder::after    { background: radial-gradient(ellipse at top, rgba(234,225,206,0.07) 0%, transparent 60%); }
body.holiday-semester::after  { background: radial-gradient(ellipse at top, rgba(243,236,220,0.06) 0%, transparent 65%); }
body.holiday-halloween::after { background: radial-gradient(ellipse at top, rgba(168,85,247,0.08) 0%, transparent 55%); }

.fx-wrap {
  display: none;
  position: fixed;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  transition: opacity .5s var(--feiring-ease);
}
.fx-wrap.show { display: block; }
.fx-wrap.out  { opacity: 0; }

.fx-nyttaar   { z-index: 9990; }
.fx-valentin  { z-index: 9989; }
.fx-jul       { z-index: 9988; }
.fx-17mai     { z-index: 9988; }
.fx-halloween { z-index: 9987; }
.fx-sankthans { z-index: 9986; }
.fx-paske     { z-index: 9985; }
.fx-fadder    { z-index: 9984; }
.fx-semester  { z-index: 9984; }

.snowflake {
  position: absolute;
  top: -5%;
  color: #f0f8ff;
  user-select: none;
  pointer-events: none;
  will-change: transform, opacity;
  animation: snow-fall linear infinite;
  text-shadow: 0 0 6px rgba(200,230,255,0.5);
}
@keyframes snow-fall {
  0%   { transform: translate3d(0, -10vh, 0) rotate(0deg); opacity: 0; }
  10%  { opacity: 0.9; }
  90%  { opacity: 0.9; }
  100% { transform: translate3d(40px, 110vh, 0) rotate(360deg); opacity: 0; }
}
.fx-jul::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 180px;
  background: linear-gradient(180deg, rgba(180,220,255,0.18) 0%, transparent 100%);
  pointer-events: none;
}

.fx-nyttaar canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.heart-drift {
  position: absolute;
  bottom: -8%;
  color: #ff7a9e;
  user-select: none;
  pointer-events: none;
  will-change: transform, opacity;
  animation: heart-rise linear infinite;
  filter: drop-shadow(0 0 8px rgba(255,120,160,0.4));
}
@keyframes heart-rise {
  0%   { transform: translate3d(0, 0, 0) rotate(-8deg); opacity: 0; }
  10%  { opacity: 0.85; }
  50%  { transform: translate3d(20px, -55vh, 0) rotate(6deg); }
  90%  { opacity: 0.85; }
  100% { transform: translate3d(-15px, -115vh, 0) rotate(-4deg); opacity: 0; }
}
.fx-valentin::before,
.fx-valentin::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: 120px;
  pointer-events: none;
}
.fx-valentin::before { left: 0;  background: linear-gradient(90deg,  rgba(255,120,160,0.18) 0%, transparent 100%); }
.fx-valentin::after  { right: 0; background: linear-gradient(270deg, rgba(255,120,160,0.18) 0%, transparent 100%); }

.bunny-hop {
  position: absolute;
  bottom: 8%;
  font-size: 36px;
  user-select: none;
  pointer-events: none;
  will-change: transform;
  animation: bunny-hop-x 18s linear infinite, bunny-hop-y 0.6s ease-in-out infinite;
  filter: drop-shadow(0 4px 8px rgba(0,0,0,0.25));
}
@keyframes bunny-hop-x {
  0%   { left: -8%; }
  100% { left: 108%; }
}
@keyframes bunny-hop-y {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-26px); }
}
.easter-egg {
  position: absolute;
  bottom: 12%;
  font-size: 26px;
  user-select: none;
  pointer-events: none;
  opacity: 0.9;
  filter: drop-shadow(0 3px 6px rgba(0,0,0,0.2));
  animation: egg-bob 4s ease-in-out infinite;
}
@keyframes egg-bob {
  0%, 100% { transform: translateY(0) rotate(-4deg); }
  50%      { transform: translateY(-8px) rotate(4deg); }
}
.petal {
  position: absolute;
  top: -5%;
  font-size: 16px;
  user-select: none;
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
  animation: petal-fall linear infinite;
}
@keyframes petal-fall {
  0%   { transform: translate3d(0, -10vh, 0) rotate(0deg); opacity: 0; }
  10%  { opacity: 0.85; }
  50%  { transform: translate3d(60px, 50vh, 0) rotate(180deg); }
  90%  { opacity: 0.85; }
  100% { transform: translate3d(-30px, 115vh, 0) rotate(360deg); opacity: 0; }
}
.butterfly {
  position: absolute;
  font-size: 22px;
  user-select: none;
  pointer-events: none;
  will-change: transform;
  filter: drop-shadow(0 0 6px rgba(255,200,220,0.5));
  animation: butterfly-flight 22s ease-in-out infinite;
}
@keyframes butterfly-flight {
  0%   { transform: translate3d(-10vw, 60vh, 0) rotate(-15deg); }
  25%  { transform: translate3d(30vw, 35vh, 0) rotate(15deg); }
  50%  { transform: translate3d(60vw, 55vh, 0) rotate(-10deg); }
  75%  { transform: translate3d(85vw, 25vh, 0) rotate(20deg); }
  100% { transform: translate3d(110vw, 50vh, 0) rotate(0deg); }
}
.fx-paske::before {
  content: '';
  position: absolute;
  top: -30%;
  left: 50%;
  width: 160%;
  height: 80%;
  transform: translateX(-50%);
  background: radial-gradient(ellipse at center, rgba(255,240,150,0.15) 0%, transparent 60%);
  pointer-events: none;
  animation: sun-pulse 8s ease-in-out infinite;
}
@keyframes sun-pulse {
  0%, 100% { opacity: 0.7; }
  50%      { opacity: 1; }
}

.flag-stripe {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 6px;
  z-index: 410;
  background: linear-gradient(90deg,
    #BA0C2F 0%, #BA0C2F 33%,
    #FFFFFF 33%, #FFFFFF 66%,
    #00205B 66%, #00205B 100%);
  opacity: 0;
  transition: opacity .6s var(--feiring-ease);
}
.flag-stripe.show { display: block; }
.flag-stripe.in   { opacity: 1; }

.confetti-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9988;
  opacity: 0;
  transition: opacity .5s ease;
}
.confetti-canvas.is-on { opacity: 1; }

.maipille {
  position: fixed;
  top: 86px;
  right: 24px;
  z-index: 95;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px 10px 14px;
  background: linear-gradient(90deg, #BA0C2F 0%, #BA0C2F 33%, #FFFFFF 33%, #FFFFFF 66%, #00205B 66%, #00205B 100%);
  border-radius: 100px;
  box-shadow: 0 12px 32px -10px rgba(0,32,91,0.45);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  border: 0;
  opacity: 0;
  transform: translateY(-12px);
  transition: opacity 0.5s ease, transform 0.5s var(--feiring-ease), box-shadow 0.3s ease;
  font-family: var(--sans, 'Inter', sans-serif);
}
.maipille.is-visible { opacity: 1; transform: translateY(0); }
.maipille:hover {
  box-shadow: 0 18px 40px -10px rgba(0,32,91,0.55);
  transform: translateY(-2px) scale(1.02);
}
.maipille__inner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px;
  background: rgba(255,255,255,0.95);
  color: var(--rik-blue-dark, #003888);
  border-radius: 100px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.maipille__flag { font-size: 14px; line-height: 1; }
.maipille__close {
  position: absolute;
  top: -6px; right: -6px;
  width: 22px; height: 22px;
  display: grid;
  place-items: center;
  background: #fff;
  color: var(--rik-slate, #1a1b2e);
  border-radius: 50%;
  border: 1px solid rgba(0,0,0,0.08);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.maipille:hover .maipille__close { opacity: 1; }
.maipille__close:hover { background: var(--rik-cream, #EAE1CE); }

@media (max-width: 640px) {
  .maipille {
    top: auto;
    bottom: 80px;
    right: 16px;
    padding: 8px 14px 8px 12px;
  }
  .maipille__inner { font-size: 11.5px; padding: 3px 10px; }
}

.ember {
  position: absolute;
  bottom: -2%;
  width: 5px;
  height: 5px;
  background: radial-gradient(circle, #ffd166 0%, #ff7a1f 45%, transparent 100%);
  border-radius: 50%;
  user-select: none;
  pointer-events: none;
  will-change: transform, opacity;
  animation: ember-rise linear infinite;
  filter: blur(0.4px);
}
@keyframes ember-rise {
  0%   { transform: translate3d(0, 0, 0) scale(1); opacity: 0; }
  10%  { opacity: 1; }
  60%  { opacity: 0.7; }
  100% { transform: translate3d(-30px, -110vh, 0) scale(0.4); opacity: 0; }
}

.bonfire {
  position: absolute;
  bottom: 4%;
  left: 50%;
  transform: translateX(-50%);
  width: 240px;
  height: 240px;
  pointer-events: none;
}
.bonfire__logs {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 180px;
  height: 32px;
  background: linear-gradient(180deg, #6b3a1a 0%, #3a1f10 100%);
  border-radius: 8px;
  box-shadow: 0 4px 18px rgba(0,0,0,0.5),
              inset 0 -8px 12px rgba(0,0,0,0.4);
}
.bonfire__logs::before,
.bonfire__logs::after {
  content: '';
  position: absolute;
  width: 60px;
  height: 14px;
  background: linear-gradient(180deg, #8b4f24 0%, #4a2a14 100%);
  border-radius: 4px;
  bottom: 20px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.bonfire__logs::before { left: 12px;  transform: rotate(-8deg); }
.bonfire__logs::after  { right: 12px; transform: rotate(8deg); }
.bonfire__flame {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  width: 100px;
  height: 180px;
  background: radial-gradient(ellipse at center bottom,
              #ffea80 0%,
              #ffb84d 25%,
              #ff7a1f 50%,
              #d12d0d 75%,
              transparent 100%);
  border-radius: 50% 50% 30% 30% / 60% 60% 40% 40%;
  filter: blur(2px);
  mix-blend-mode: screen;
  animation: flame-flicker 1.6s ease-in-out infinite alternate;
  transform-origin: center bottom;
  will-change: transform, filter;
}
.bonfire__flame--inner {
  width: 60px;
  height: 130px;
  background: radial-gradient(ellipse at center bottom,
              #ffffff 0%,
              #ffea80 25%,
              #ffb84d 60%,
              transparent 100%);
  filter: blur(1px);
  animation-duration: 1.1s;
  animation-delay: -0.4s;
}
.bonfire__flame--core {
  width: 28px;
  height: 80px;
  background: radial-gradient(ellipse at center bottom,
              #ffffff 0%,
              #fff8d6 50%,
              transparent 100%);
  filter: blur(0.5px);
  animation-duration: 0.7s;
}
@keyframes flame-flicker {
  0%   { transform: translateX(-50%) scaleY(1) scaleX(1)   skewX(0deg); filter: blur(2px) brightness(1); }
  25%  { transform: translateX(-50%) scaleY(1.08) scaleX(0.94) skewX(2deg); }
  50%  { transform: translateX(-50%) scaleY(0.94) scaleX(1.06) skewX(-3deg); filter: blur(1.5px) brightness(1.15); }
  75%  { transform: translateX(-50%) scaleY(1.05) scaleX(0.96) skewX(1deg); }
  100% { transform: translateX(-50%) scaleY(1.1) scaleX(0.92)  skewX(-1deg); filter: blur(2.2px) brightness(1.1); }
}
.bonfire__glow {
  position: absolute;
  bottom: -40px;
  left: 50%;
  transform: translateX(-50%);
  width: 360px;
  height: 360px;
  background: radial-gradient(circle, rgba(255,140,60,0.5) 0%, rgba(255,100,30,0.2) 30%, transparent 60%);
  border-radius: 50%;
  pointer-events: none;
  animation: bonfire-glow 2.4s ease-in-out infinite alternate;
}
@keyframes bonfire-glow {
  0%   { opacity: 0.7; transform: translateX(-50%) scale(1); }
  100% { opacity: 1;   transform: translateX(-50%) scale(1.08); }
}
.fx-sankthans::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 340px;
  background: linear-gradient(0deg,
              rgba(255,140,60,0.32) 0%,
              rgba(255,100,30,0.14) 40%,
              transparent 100%);
  pointer-events: none;
}

@media (max-width: 720px) {
  .bonfire { width: 180px; height: 180px; bottom: 3%; }
  .bonfire__logs { width: 130px; height: 24px; }
  .bonfire__flame { width: 72px; height: 130px; bottom: 22px; }
  .bonfire__flame--inner { width: 42px; height: 92px; }
  .bonfire__flame--core { width: 20px; height: 56px; }
  .bonfire__glow { width: 260px; height: 260px; }
}

body.holiday-halloween {
  position: relative;
}
body.holiday-halloween::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9986;
  background: radial-gradient(ellipse at center,
              rgba(20,0,30,0.35) 0%,
              rgba(10,0,20,0.55) 60%,
              rgba(0,0,0,0.7) 100%);
  mix-blend-mode: multiply;
  opacity: 0;
  transition: opacity 1.2s ease;
}
body.is-loaded.holiday-halloween::before { opacity: 1; }

.lightning-flash {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9988;
  background: rgba(220,210,255,0);
  mix-blend-mode: screen;
}
.lightning-flash.flash {
  animation: lightning-strike 0.6s ease-out;
}
@keyframes lightning-strike {
  0%   { background: rgba(255,255,255,0); }
  5%   { background: rgba(240,230,255,0.85); }
  10%  { background: rgba(255,255,255,0); }
  15%  { background: rgba(230,220,255,0.6); }
  20%  { background: rgba(255,255,255,0); }
  100% { background: rgba(255,255,255,0); }
}
body.holiday-halloween.thunder-shake {
  animation: thunder-shake 0.5s ease-out;
}
@keyframes thunder-shake {
  0%, 100% { transform: translate(0, 0); }
  20%      { transform: translate(-2px, 1px); }
  40%      { transform: translate(2px, -1px); }
  60%      { transform: translate(-1px, 2px); }
  80%      { transform: translate(1px, -1px); }
}
.pumpkin {
  position: absolute;
  bottom: 8%;
  font-size: 38px;
  filter: drop-shadow(0 0 12px rgba(255,140,60,0.6));
  user-select: none;
  pointer-events: none;
  animation: pumpkin-glow 2.4s ease-in-out infinite alternate;
}
@keyframes pumpkin-glow {
  0%   { filter: drop-shadow(0 0 8px rgba(255,140,60,0.5)); transform: rotate(-3deg); }
  100% { filter: drop-shadow(0 0 18px rgba(255,160,60,0.9)); transform: rotate(3deg); }
}
.spider-drop {
  position: absolute;
  top: 0;
  width: 1px;
  background: rgba(200,200,200,0.4);
  pointer-events: none;
}
.spider-drop::after {
  content: '🕷';
  position: absolute;
  bottom: -8px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 22px;
}

.bat {
  position: absolute;
  top: 15%;
  font-size: 26px;
  user-select: none;
  pointer-events: none;
  filter: drop-shadow(0 0 4px rgba(0,0,0,0.4));
  will-change: transform;
  animation: bat-fly 14s linear infinite, bat-flap 0.3s ease-in-out infinite;
}
@keyframes bat-fly {
  0%   { left: -8%; top: 10%; }
  50%  { top: 35%; }
  100% { left: 108%; top: 15%; }
}
@keyframes bat-flap {
  0%, 100% { transform: scaleX(1); }
  50%      { transform: scaleX(0.6); }
}
.ghost-drift {
  position: absolute;
  font-size: 30px;
  user-select: none;
  pointer-events: none;
  opacity: 0.7;
  filter: drop-shadow(0 0 8px rgba(255,255,255,0.4));
  animation: ghost-float 16s ease-in-out infinite;
}
@keyframes ghost-float {
  0%   { transform: translate3d(-10vw, 20vh, 0); opacity: 0; }
  20%  { opacity: 0.7; }
  80%  { opacity: 0.7; }
  100% { transform: translate3d(110vw, 30vh, 0); opacity: 0; }
}
.cobweb {
  position: absolute;
  top: 0;
  width: 140px;
  height: 140px;
  font-size: 110px;
  opacity: 0.4;
  pointer-events: none;
  color: rgba(255,255,255,0.6);
  user-select: none;
}
.cobweb--left  { left: 0;  transform: rotate(-15deg); }
.cobweb--right { right: 0; transform: rotate(195deg); }

.fadder-confetti {
  position: absolute;
  top: -5%;
  width: 8px;
  height: 12px;
  user-select: none;
  pointer-events: none;
  will-change: transform, opacity;
  animation: fadder-fall linear infinite;
}
@keyframes fadder-fall {
  0%   { transform: translate3d(0, -10vh, 0) rotate(0deg); opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { transform: translate3d(30px, 110vh, 0) rotate(720deg); opacity: 0; }
}

.semester-particle {
  position: absolute;
  top: -5%;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--rik-cream, #EAE1CE);
  user-select: none;
  pointer-events: none;
  opacity: 0.7;
  will-change: transform, opacity;
  animation: semester-drift linear infinite;
}
@keyframes semester-drift {
  0%   { transform: translate3d(0, -10vh, 0); opacity: 0; }
  15%  { opacity: 0.7; }
  85%  { opacity: 0.7; }
  100% { transform: translate3d(15px, 110vh, 0); opacity: 0; }
}

.feiring-popup {
  display: none;
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 9991;
  width: min(440px, calc(100vw - 32px));
  padding: 36px 32px 28px;
  background: linear-gradient(180deg, rgba(20,32,60,0.96) 0%, rgba(8,16,40,0.98) 100%);
  border: 1px solid var(--rik-cream, #EAE1CE);
  border-radius: 24px;
  box-shadow: 0 32px 80px -16px rgba(0,0,0,0.7), 0 0 40px rgba(234,225,206,0.2);
  text-align: center;
  color: var(--rik-cream, #EAE1CE);
  font-family: var(--sans, 'Inter', sans-serif);
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.92);
  transition: opacity .55s var(--feiring-ease), transform .55s var(--feiring-ease);
  pointer-events: none;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.feiring-popup.show { display: block; }
.feiring-popup.in {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  pointer-events: auto;
}
.feiring-popup__icon {
  font-size: 56px;
  line-height: 1;
  margin-bottom: 14px;
  display: block;
  filter: drop-shadow(0 4px 12px rgba(0,0,0,0.4));
}
.feiring-popup__title {
  font-family: var(--serif, 'Instrument Serif', serif);
  font-size: 32px;
  line-height: 1.1;
  font-style: italic;
  margin: 0 0 12px;
  color: var(--rik-cream, #EAE1CE);
}
.feiring-popup__title em { color: #fff; font-style: italic; }
.feiring-popup__quote {
  min-height: 64px;
  font-size: 16px;
  line-height: 1.5;
  color: rgba(255,255,255,0.85);
  margin: 0 0 22px;
  font-style: italic;
  transition: opacity .4s ease;
}
.feiring-popup__quote.fade-out { opacity: 0; }
.feiring-popup__body {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255,255,255,0.82);
  margin: 0 0 22px;
}
.feiring-popup__body strong { color: var(--rik-cream, #EAE1CE); font-weight: 600; }
.feiring-popup__close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(234,225,206,0.25);
  border-radius: 50%;
  color: var(--rik-cream, #EAE1CE);
  font-size: 16px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .2s ease, transform .2s ease;
}
.feiring-popup__close:hover {
  background: rgba(234,225,206,0.18);
  transform: scale(1.08);
}
.feiring-popup__cta {
  display: inline-block;
  padding: 10px 22px;
  background: var(--rik-cream, #EAE1CE);
  color: var(--rik-blue-dark, #003888);
  border: 0;
  border-radius: 100px;
  font-family: var(--sans, 'Inter', sans-serif);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease;
}
.feiring-popup__cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px -6px rgba(234,225,206,0.4);
}

.popup-eksamen { border-color: var(--rik-cream, #EAE1CE); }
.popup-fadder  { border-color: #0a5fd1; box-shadow: 0 32px 80px -16px rgba(0,0,0,0.7), 0 0 40px rgba(10,95,209,0.35); }
.popup-semester-jan { border-color: #a8d0ff; box-shadow: 0 32px 80px -16px rgba(0,0,0,0.7), 0 0 40px rgba(168,208,255,0.25); }
.popup-semester-aug { border-color: #ffb766; box-shadow: 0 32px 80px -16px rgba(0,0,0,0.7), 0 0 40px rgba(255,183,102,0.25); }

@media (max-width: 640px) {
  .feiring-popup {
    width: calc(100vw - 24px);
    padding: 28px 22px 22px;
  }
  .feiring-popup__title { font-size: 26px; }
  .feiring-popup__icon { font-size: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  .fx-wrap,
  .confetti-canvas,
  .lightning-flash {
    display: none !important;
  }
  .holiday-banner,
  .feiring-popup {
    transition: opacity .3s ease !important;
    transform: translate(-50%, -50%) !important;
  }
  .holiday-banner { transform: none !important; }
  .holiday-banner__close,
  .feiring-popup__close { transition: none; }
  .bonfire__flame,
  .bonfire__glow,
  .pumpkin,
  body.holiday-halloween,
  .butterfly,
  .petal { animation: none !important; }
  body.holiday-halloween::before { opacity: 0.6; }
}

@media (max-width: 640px) {
  .holiday-banner {
    font-size: 14px;
    padding: 9px 42px 9px 14px;
  }
  .cobweb {
    width: 90px; height: 90px; font-size: 72px;
  }
}
