:root {
 --bg: #f5f5f2;
 --accent-line: rgba(44, 51, 46, 0.08);
 --text-prime: #2c332e;
 --text-mute: #8b9a93;
 --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
}

body {
 background-color: var(--bg);
 color: var(--text-prime);
 font-family: "LXGW WenKai Screen", serif;
 line-height: 1.8;
 background-image: radial-gradient(var(--accent-line) 1px, transparent 0);
 background-size: 30px 30px;
}

.ambient-cursor {
 position: fixed;
 width: 400px;
 height: 400px;
 background: radial-gradient(
 circle,
 rgba(216, 224, 219, 0.4) 0%,
 transparent 70%
 );
 border-radius: 50%;
 pointer-events: none;
 z-index: -1;
 transform: translate(-50%, -50%);
}

.container {
 max-width: 850px;
 margin: 0 auto;
 padding: 12vh 40px;
}

.reveal {
 opacity: 0;
 transform: translateY(25px);
 transition: all 1.2s var(--ease-out);
}

.reveal.active {
 opacity: 1;
 transform: translateY(0);
}

.viewfinder {
 position: relative;
 margin-bottom: 120px;
 padding: 12px;
 border: 1px solid var(--accent-line);
 background: white;
 transition: all 0.6s var(--ease-out);

 overflow: hidden;
}

.viewfinder:hover {
 border-color: var(--text-mute);
 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.02);
}

.viewfinder img {
 max-width: 100%;
 width: 100%;
 height: auto;
 display: block;
 cursor: zoom-in;
 transition: transform 1.5s var(--ease-out);
}

.image-slot {
 width: 100%;
 overflow: hidden;
 background: #f0f0f0;
 cursor: zoom-in;
}

.image-slot img {
 width: 100%;
 height: auto;
 transition: transform 1.5s var(--ease-out);
}

.image-slot:hover img {
 transform: scale(1.03);
}

.meta-data {
 margin-top: 10px;
 font-size: 0.65rem;
 color: var(--text-mute);
 display: flex;
 justify-content: space-between;
 letter-spacing: 0.15em;
}

.essay-content {
 max-width: 550px;
 margin-bottom: 30px;
}

.essay-content p {
 font-size: 1.1rem;
 margin-bottom: 0.8rem;
 letter-spacing: 0.02em;
}

.essay-content .dim {
 color: var(--text-mute);
 font-size: 0.9rem;
 line-height: 1.6;
}

.contributor-tag {
 padding: 2px 8px;
 border: 1px solid var(--accent-line);
 border-radius: 4px;
 font-size: 0.7rem;
 transition: all 0.3s;
}

.contributor-tag:hover {
 background: var(--text-prime);
 color: white;
}

#previewModal {
 position: fixed;
 inset: 0;
 z-index: 1000;
 background: rgba(245, 245, 242, 0.95);
 display: none;
 align-items: center;
 justify-content: center;
 backdrop-filter: blur(10px);
}

#previewModal img {
 max-width: 90vw;
 max-height: 85vh;
 width: auto;
 height: auto;
 object-fit: contain;
 display: block;
 border-radius: 8px;
 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

#previewModal > div[class*="cursor-pointer"] {
 position: absolute;
 top: 2.5rem;
 right: 2.5rem;
}