:root {
    --wall-color: #5e7b60;        
    --base-dark: #1B3B2B;         
    --accent-gold: #E5C07B;       
    --muted-slate: #8CA399;       
    
    --bg-brown: #2D1A12;          
    --ornate-gold: #D4AF37;       
    
    --rope-red: #8CA399;          
    --text-gold: #1B3B2B;         
}

/* --- Viewport & Global Reset --- */
html, body {
    margin: 0 !important;
    padding: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    min-height: 100vh !important;
    overflow-x: auto !important;   
    overflow-y: hidden !important; 
    background-color: var(--wall-color);
    scrollbar-width: none !important; 
    -ms-overflow-style: none !important; 
}

#splash-overlay {
  position: fixed;
  inset: 0; /* top: 0, right: 0, bottom: 0, left: 0 */
  width: 100vw;
  height: 100vh;
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  transition: opacity 0.5s ease;
}

#splash-overlay img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* forces GIF to cover screen seamlessly */
}

/* Fades out the overlay and allows clicking elements underneath */
#splash-overlay.hidden {
  opacity: 0;
  pointer-events: none;
}

::-webkit-scrollbar {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
}

/* --- Global Cursor Setups --- */
*, *::before, *::after {
    cursor: url('src/brush.png') 0 0, auto !important;
}

nav a:hover, 
.frame:hover,
.frame:hover img {
    cursor: url('src/splatter.png') 0 0, auto !important;
}

/* --- Navigation --- */
nav {
    gap: 8px; 
    padding: 8px 16px; 
    height: auto;
    flex-wrap: nowrap; 
    position: fixed;
    top: 15px; 
    left: 50%;
    transform: translateX(-50%);
    width: max-content; 
    max-width: 95%;
    background: rgba(27, 59, 43, 0.9); 
    backdrop-filter: blur(8px); 
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(229, 192, 123, 0.25); 
    border-radius: 30px; 
    box-shadow: 
        0 10px 30px rgba(0, 0, 0, 0.5),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
    z-index: 1000;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: all 0.3s ease;
}

nav a {
    text-decoration: none;
    color: #E8C88B; 
    font-family: system-ui, -apple-system, sans-serif;
    font-weight: 600;
    font-size: 0.85rem; 
    text-transform: uppercase;
    letter-spacing: 1.2px; 
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 12px; 
    border-radius: 20px;
    transition: all 0.2s cubic-bezier(0.25, 0.8, 0.25, 1);
    white-space: nowrap; 
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}

nav a:hover {
    color: #1B3B2B; 
    background-color: #E8C88B; 
    transform: translateY(-1px);
    box-shadow: 
        0 4px 8px rgba(229, 192, 123, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
    text-shadow: none; 
}

.gallery-container {
  position: relative;
  overflow: hidden;
}

/* Ensure stanchions remain in front of the cat */
.stanchions {
  position: absolute;
  z-index: 10;
  pointer-events: none;
}

#gallery-cat {
  position: absolute;
  z-index: 5; /* Behind stanchions (10), above floor background */
  width: 120px; /* Adjust scale as needed */
  height: auto;
  pointer-events: none;
  /* Align bottom edge of cat image to its positioning coordinates */
  transform-origin: bottom center; 
  will-change: left;
}

#gallery-cat.facing-left {
  transform: scaleX(-1);
}

#gallery-cat.facing-right {
  transform: scaleX(1);
}

/* --- Gallery Layout --- */
#gallery-track {
    display: flex;
    flex-direction: row;
    height: 100vh !important;
    min-height: 100vh !important;
    width: max-content; 
    padding-left: 15vw;
    padding-right: 45vw;
    background: linear-gradient(to bottom, var(--wall-color) 0%, #3e443c 100%);
}

.gallery-section {
    display: flex;
    flex-direction: column;
    justify-content: flex-start; 
    align-items: center; 
    position: relative;
    padding: 0 200px;
    padding-top: 100px; 
    height: 100%;
    background: transparent; 
}

.section-floating-title {
    position: relative; 
    margin-bottom: 45px; 
    align-self: flex-start; 
    font-size: 3.5rem;
    color: var(--text-gold); 
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
    font-family: 'Impact', sans-serif;
    text-transform: uppercase;
    white-space: nowrap;
    letter-spacing: 3px;
    z-index: 2; 
    pointer-events: none;
    opacity: 0.95;
    border-bottom: 2px solid var(--accent-gold); 
    box-shadow: 0 1px 0 rgba(254, 241, 201, 0.4);
    padding-bottom: 5px;
    flex-shrink: 0; 
    transition: text-shadow 1.2s cubic-bezier(0.25, 1, 0.5, 1);
}

.section-floating-title::before {
    content: '';
    position: absolute;
    top: -100px; 
    left: 50%;
    transform: translateX(-50%);
    width: 24px;
    height: 16px;
    background: linear-gradient(to right, #5a3d16, #d1b46a, #493110);
    border-bottom: 3px solid #fef1c9;
    border-radius: 0 0 12px 12px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.4);
    z-index: 10;
}

/* The Volumetric Conical Light Beam - Wide, Feathered, and Unconstrained */
.section-floating-title::after {
    content: '';
    position: absolute;
    top: -84px; 
    left: 50%;
    transform: translateX(-50%);
    width: 600px; 
    height: 190px; 
    background: conic-gradient(
        from 110deg at 50% 0%,
        transparent 0deg,
        rgba(254, 241, 201, 0.0) 5deg,      
        rgba(254, 241, 201, 0.35) 45deg,    
        rgba(254, 241, 201, 0.35) 95deg,    
        rgba(254, 241, 201, 0.0) 135deg,    
        transparent 140deg
    );
    -webkit-mask-image: linear-gradient(to bottom, black 20%, transparent 90%);
    mask-image: linear-gradient(to bottom, black 20%, transparent 90%);
    filter: blur(5px); 
    pointer-events: none;
    
    z-index: -1;

    opacity: 0;
    transition: opacity 1.2s cubic-bezier(0.25, 1, 0.5, 1);
}

.art-group {
    display: flex;
    gap: 120px; 
    position: relative;
    z-index: 1; 
    align-items: flex-start; 
    height: 100%;
}

.art-piece {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    width: auto; 
    min-width: 220px;
}
/* --- Slimmer Baroque Frame with Aligned Corners --- */
.frame {
    display: inline-block;
    position: relative;
    padding: 8px;
    background-color: #000;
    
    /* 1. Thinner Gilded Wood Base Border */
    border: 14px solid;
    border-image: linear-gradient(
        135deg, 
        #9d701a 0%, 
        #fcf6ba 20%, 
        #bf953f 40%, 
        #fbf5b7 60%, 
        #9d701a 80%, 
        #5a4214 100%
    ) 14;
    
    box-shadow: 
        inset 0 0 20px rgba(0, 0, 0, 0.95),                     
        inset 0 0 0 3px #2b1d03,                                
        0 12px 24px rgba(0, 0, 0, 0.5),                         
        0 0 0 1px #5a4214;                                      
        
    transform-style: preserve-3d;
    will-change: transform;
    transform: perspective(1000px) rotateY(var(--rot, 0deg));
    transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), box-shadow 0.4s ease; 
}

/* --- The Baroque Top Crest --- */
.frame::before {
    content: "";
    position: absolute;
    top: -26px;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 34px;
    z-index: 10;
    pointer-events: none;
    
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 50' fill='%23dfb055'%3E%3Cpath d='M50,45 C35,45 25,25 15,30 C5,35 0,25 10,15 C20,5 35,15 50,5 C65,15 80,5 90,15 C100,25 95,35 85,30 C75,25 65,45 50,45 Z' stroke='%235a4214' stroke-width='2'/%3E%3Ccircle cx='50' cy='22' r='8' fill='%23ffffff' stroke='%239d701a' stroke-width='2'/%3E%3Cpath d='M30,22 C40,32 60,32 70,22' fill='none' stroke='%239d701a' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    filter: drop-shadow(0 3px 4px rgba(0,0,0,0.4));
}

/* --- Corner Flourishes (Perfectly Aligned) --- */
.frame::after {
    content: "";
    position: absolute;
    top: -14px;
    left: -14px;
    right: -14px;
    bottom: -14px;
    z-index: 5;
    pointer-events: none;
    
    /* 4-Corner SVG Scrollwork */
    background-image: 
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='%23dfb055'%3E%3Cpath d='M0,0 L40,0 C30,5 25,15 25,25 C15,25 5,30 0,40 L0,0 Z M12,12 C18,8 24,18 18,24 C12,18 8,18 12,12 Z' stroke='%235a4214' stroke-width='1.5'/%3E%3C/svg%3E"), 
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='%23dfb055'%3E%3Cpath d='M40,0 L0,0 C10,5 15,15 15,25 C25,25 35,30 40,40 L40,0 Z M28,12 C22,8 16,18 22,24 C28,18 32,18 28,12 Z' stroke='%235a4214' stroke-width='1.5'/%3E%3C/svg%3E"), 
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='%23dfb055'%3E%3Cpath d='M0,40 L40,40 C30,35 25,25 25,15 C15,15 5,10 0,0 L0,40 Z M12,28 C18,32 24,22 18,16 C12,22 8,22 12,28 Z' stroke='%235a4214' stroke-width='1.5'/%3E%3C/svg%3E"), 
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='%23dfb055'%3E%3Cpath d='M40,40 L0,40 C10,35 15,25 15,15 C25,15 35,10 40,0 L40,40 Z M28,28 C22,32 16,22 22,16 C28,22 32,22 28,28 Z' stroke='%235a4214' stroke-width='1.5'/%3E%3C/svg%3E");
        
    background-position: 
        top left, 
        top right, 
        bottom left, 
        bottom right;
    background-size: 32px 32px;
    background-repeat: no-repeat;
    filter: drop-shadow(0 2px 3px rgba(0,0,0,0.5));
}

/* --- Hover Dynamics --- */
.frame:hover {
    transform: perspective(1000px) rotateY(var(--rot, 0deg)) scale(1.04);
    box-shadow: 
        inset 0 0 20px rgba(0, 0, 0, 0.9),
        0 20px 40px rgba(0, 0, 0, 0.65);
}

.frame:hover::before,
.frame:hover::after {
    filter: brightness(1.12) drop-shadow(0 4px 6px rgba(0,0,0,0.6));
    transition: filter 0.3s ease;
}

.frame img {
    display: block;
    max-height: calc(28vh - 44px);
    width: auto;
    max-width: 100%;
    object-fit: cover;
    -webkit-user-drag: none;
    box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.8);
}

/* --- Plaques --- */
.plaque {
    margin-top: 25px;
    background: var(--bg-brown); 
    padding: 14px 16px;
    width: 220px; 
    box-shadow: 
        0 10px 20px rgba(0, 0, 0, 0.4), 
        0 2px 4px rgba(0, 0, 0, 0.2);
    transform: perspective(1000px) rotateY(var(--rot, 0deg)); 
    white-space: normal; 
    max-height: 35vh;
    overflow-y: auto;
    scrollbar-width: none; 
    position: relative; 
    border: 1px solid rgba(229, 192, 123, 0.15); 
}

.plaque-inner {
    text-align: center;
    min-height: 100%;
}

.plaque::before {
    content: '';
    position: absolute;
    top: 4px;
    left: 4px;
    right: 4px;
    height: 6px; 
    background-image: 
        linear-gradient(90deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        linear-gradient(0deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        radial-gradient(circle, #c59b4e 0%, #7c5a24 50%, #2a1804 80%, transparent 85%),
        linear-gradient(90deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        linear-gradient(0deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        radial-gradient(circle, #c59b4e 0%, #7c5a24 50%, #2a1804 80%, transparent 85%);
    background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px, 6px 6px, 6px 6px;
    background-position: left 0 top 0, left 0 top 0, left 0 top 0, right 0 top 0, right 0 top 0, right 0 top 0;
    background-repeat: no-repeat;
    filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.5));
    z-index: 5;
}

.plaque::after {
    content: '';
    position: absolute;
    bottom: 4px;
    left: 4px;
    right: 4px;
    height: 6px; 
    background-image: 
        linear-gradient(90deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        linear-gradient(0deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        radial-gradient(circle, #c59b4e 0%, #7c5a24 50%, #2a1804 80%, transparent 85%),
        linear-gradient(90deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        linear-gradient(0deg, transparent 40%, #1d1105 40%, #1d1105 60%, transparent 60%),
        radial-gradient(circle, #c59b4e 0%, #7c5a24 50%, #2a1804 80%, transparent 85%);
    background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px, 6px 6px, 6px 6px;
    background-position: left 0 top 0, left 0 top 0, left 0 top 0, right 0 top 0, right 0 top 0, right 0 top 0;
    background-repeat: no-repeat;
    filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.5));
    z-index: 5;
}

.plaque h3 {
    font-size: 0.85rem;
    color: #E8C88B; 
    font-family: system-ui, -apple-system, sans-serif;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin: 0 0 8px 0;
    border-bottom: 1px solid rgba(229, 192, 123, 0.4);
    padding-bottom: 6px;
    text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.9), 1px 1px 0px rgba(255, 255, 255, 0.1);
}

.plaque p {
    font-size: 0.8rem; 
    color: #D6C7A1; 
    font-family: system-ui, -apple-system, sans-serif;
    font-weight: 400;
    line-height: 1.5;
    margin: 0;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.9);
}

/* --- Stanchions & Barrier --- */
.stanchion-barrier {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 110px; 
    pointer-events: none !important;
    z-index: 100; 
    background: transparent;
    box-shadow: none;
}

body::before {
    content: '';
    position: fixed;
    bottom: 3.5vh; 
    left: 0;
    width: 100%;
    height: 24px;
    background: linear-gradient(
        to bottom,
        #1a0f0a 0%,     
        #4d3122 10%,    
        #2d1a12 30%,    
        #1f110a 80%,    
        #3f271a 100%    
    );
    border-top: 1px solid rgba(229, 192, 123, 0.2); 
    box-shadow: 
        0 -6px 12px rgba(0, 0, 0, 0.4),
        0 2px 4px rgba(0, 0, 0, 0.5);
    z-index: 5; 
    pointer-events: none;
}

body::after {
    content: '';
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 3.5vh;
    background: 
        linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.1) 30%, transparent 100%),
        repeating-linear-gradient(
            90deg,
            #2d1a12 0px,                                         
            #2d1a12 2px,                                         
            #3f271a 2px,                                         
            #4d3122 30px,                                        
            #362015 58px,                                        
            #2d1a12 60px                                         
        );
    box-shadow: inset 0 4px 10px rgba(0, 0, 0, 0.5);
    z-index: 4; 
    pointer-events: none;
}

.stanchion-barrier, 
.stanchion-barrier *, 
#rope-container, 
#rope-container * {
    pointer-events: none !important;
}

.rope-container {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 110px;
    display: flex;
    justify-content: space-around;
    align-items: flex-end; 
    z-index: 1;
}

.post {
    width: 14px;
    height: 85px;
    background: linear-gradient(
        to right, 
        #5a3d16 0%, 
        #a37c3f 15%, 
        #d1b46a 30%, 
        #fef1c9 45%, 
        #bca061 65%, 
        #704d1e 85%, 
        #493110 100%
    );
    position: relative;
    box-shadow: 2px 0 5px rgba(0, 0, 0, 0.3);
}

.post::before {
    content: '';
    position: absolute;
    top: -16px;
    left: -4px;
    width: 22px;
    height: 16px;
    background: radial-gradient(ellipse at center, #fef1c9 0%, #bca061 60%, #493110 100%);
    border-radius: 50% 50% 30% 30%;
    box-shadow: 
        inset 0 -2px 5px rgba(0,0,0,0.4),
        0 2px 3px rgba(0,0,0,0.3);
    z-index: 2;
}

.post::after {
    content: '';
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 8px;
    height: 8px;
    border: 3px solid #d1b46a;
    border-radius: 50%;
    background: transparent;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); 
    z-index: 3;
}

.post-base {
    position: absolute;
    bottom: -4px;
    left: -18px;
    width: 50px;
    height: 12px;
    border-radius: 50% 50% 20% 20%;
    background: linear-gradient(
        to right, 
        #493110 0%, 
        #bca061 30%, 
        #fef1c9 50%, 
        #bca061 70%, 
        #493110 100%
    );
    box-shadow: 
        0 4px 6px rgba(0, 0, 0, 0.6), 
        0 1px 2px rgba(0, 0, 0, 0.4);
    z-index: 1;
}

.rope {
    flex-grow: 1;
    height: 72px; 
    border-bottom: 8px solid var(--rope-red);
    border-radius: 0 0 50% 50% / 0 0 100% 100%;
    margin: 0 -2px; 
    margin-bottom: 11px; 
    position: relative;
    filter: drop-shadow(0 6px 5px rgba(0, 0, 0, 0.3));
}

.rope::before {
    content: '';
    position: absolute;
    top: 1px;
    left: -2px;
    width: 6px;
    height: 11px;
    background: linear-gradient(135deg, #fef1c9, #704d1e);
    border-radius: 2px;
    transform: rotate(-15deg); 
    z-index: 4;
    box-shadow: 1px 1px 2px rgba(0,0,0,0.3);
}

.rope::after {
    content: '';
    position: absolute;
    top: 1px;
    right: -2px;
    width: 6px;
    height: 11px;
    background: linear-gradient(-135deg, #fef1c9, #704d1e);
    border-radius: 2px;
    transform: rotate(15deg); 
    z-index: 4;
    box-shadow: -1px 1px 2px rgba(0,0,0,0.3);
}

/* --- Click Hints & Interactive Signs --- */
.click-hint {
    position: absolute;
    top: -40px;
    background: var(--base-dark);
    color: var(--accent-gold);
    padding: 5px 12px;
    border-radius: 4px;
    font-size: 0.8rem;
    font-family: system-ui, -apple-system, sans-serif;
    font-weight: bold;
    text-transform: uppercase;
    box-shadow: 0 4px 15px rgba(27, 59, 43, 0.25);
    white-space: nowrap;
    z-index: 10;
    pointer-events: none;
    animation: bounce 2s infinite;
    opacity: 0;
    transition: opacity 0.8s ease;
}

.click-hint.show {
    opacity: 1;
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-10px); }
    60% { transform: translateY(-5px); }
}

.fade-out {
    opacity: 0 !important;
}

.floor-sign-container {
    position: absolute; 
    top: calc(100vh - 160px - 3.5vh); 
    left: 40px; 
    width: 140px;
    height: 160px;
    z-index: 50; 
    display: flex;
    flex-direction: column;
    align-items: center;
    perspective: 600px;
}

.easel-frame {
    width: 110px;
    height: 140px;
    border: 6px solid #2D1A12; 
    border-radius: 3px;
    background: #1B3B2B; 
    box-shadow: 
        0 8px 16px rgba(0,0,0,0.4),
        inset 0 0 10px rgba(0,0,0,0.8);
    transform: rotateX(12deg); 
    transform-origin: bottom center;
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: center;
    align-items: center;
}

.easel-back-leg {
    position: absolute;
    bottom: 0;
    width: 8px;
    height: 145px;
    background: #1a0f0a;
    transform: rotateX(-15deg) translateZ(-20px);
    transform-origin: top center;
    box-shadow: 2px 5px 5px rgba(0,0,0,0.5);
    z-index: 1;
}

.easel-board {
    width: calc(100% - 12px);
    height: calc(100% - 12px);
    background: #fef1c9; 
    border: 2px solid #D4AF37; 
    box-shadow: inset 0 0 4px rgba(0,0,0,0.2);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 8px;
    box-sizing: border-box;
    text-align: center;
}

.warning-icon {
    font-size: 1.1rem;
    margin-bottom: 2px;
}

.easel-board h3 {
    margin: 0;
    font-family: system-ui, -apple-system, sans-serif;
    font-size: 0.75rem;
    font-weight: 800;
    color: #c0392b; 
    letter-spacing: 0.5px;
    line-height: 1;
}

.easel-board .subtitle {
    margin: 0 0 4px 0;
    font-family: system-ui, -apple-system, sans-serif;
    font-size: 0.75rem;
    font-weight: 800;
    color: #c0392b;
    letter-spacing: 0.5px;
    line-height: 1;
}

.easel-board .divider {
    width: 80%;
    height: 1px;
    background: rgba(0, 0, 0, 0.15);
    margin: 6px 0;
}

.easel-board .instruction {
    margin: 0;
    font-family: system-ui, -apple-system, sans-serif;
    font-size: 0.55rem;
    font-weight: 600;
    color: #2D1A12; 
    line-height: 1.3;
}

.easel-shadow {
    position: absolute;
    bottom: -6px;
    width: 120px;
    height: 12px;
    background: rgba(0, 0, 0, 0.6);
    filter: blur(4px);
    border-radius: 50%;
    z-index: 0;
}

/* --- Ambient Atmospheric Lighting & Masks --- */
.gallery-section::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(
        ellipse at 50% 30%, 
        rgba(0, 0, 0, 0.45) 0%, 
        rgba(0, 0, 0, 0.95) 40%,
        rgba(0, 0, 0, 1) 50%,
        rgba(0, 0, 0, 1) 100%
    );
    -webkit-mask-image: linear-gradient(
        to right, 
        rgba(0, 0, 0, 0) 0%, 
        black 450px,
        black calc(100% - 450px),
        rgba(0, 0, 0, 0) 100%
    );
    mask-image: linear-gradient(
        to right, 
        rgba(0, 0, 0, 0) 0%, 
        black 450px,
        black calc(100% - 450px),
        rgba(0, 0, 0, 0) 100%
    );
    transition: opacity 1.2s ease-in-out;
    z-index: 0;
    pointer-events: none;
}

/* Active State Vignette Shift */
.gallery-section.active-light::before {
    opacity: 0.15; 
}

/* Active State Text, Beam & Background Triggers */
.gallery-section.active-light .section-floating-title::after {
    opacity: 1;
}

.gallery-section.active-light .section-floating-title {
    text-shadow: 
        0 2px 4px rgba(27, 59, 43, 0.25),
        0 0 25px rgba(254, 241, 201, 0.85);
}

.gallery-section.lit-bg {
    background-color: var(--wall-color);
}

.gallery-section.active-light.lit-bg::before {
    opacity: 0.15; 
    -webkit-mask-image: none !important;
    mask-image: none !important;
}

/* --- Art & Plaque Spotlighting --- */
.art-piece .frame,
.art-piece .plaque {
    filter: brightness(0.2) contrast(0.8) saturate(0.6);
    transition: filter 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.gallery-section.active-light .art-piece .frame,
.gallery-section.active-light .art-piece .plaque {
    filter: brightness(1) contrast(1) saturate(1);
}