/* nowe klasy obiektów */
.tag.thaumiel, .stamp.thaumiel { color: #6fb7c2; }
.tag.neutralized, .stamp.neutralized { color: #8a918d; }
.tag.error, .stamp.error { color: #ff5ad2; }

/* SCP-231: zaczernienia bez podglądu */
.sealed .r, .sealed .r:hover { background: #e2ded0; color: transparent; cursor: not-allowed; }

/* SCP-352 */
.hair352 { position: fixed; inset: 0; z-index: 575; pointer-events: none; }
.hair352 svg { width: 100%; height: 100%; display: block; }
.hair352 path { fill: none; stroke: #050404; stroke-linecap: round; opacity: .85; stroke-dasharray: 1; stroke-dashoffset: 1; transition-property: stroke-dashoffset; transition-timing-function: linear; }
.hair352 path.on { stroke-dashoffset: 0; }
body.eu352 .view { filter: hue-rotate(25deg) saturate(1.5) blur(.5px); animation: sway352 6s ease-in-out infinite; transition: filter 4s; }
@keyframes sway352 { 50% { transform: translateX(4px) skewX(.6deg); } }

/* SCP-354 */
.pool354 { position: fixed; left: 0; right: 0; bottom: 0; height: 0; z-index: 575; pointer-events: none; transition: height 40s linear; }
.pool354.rise { height: 26vh; }
.pool354 > svg { position: absolute; left: 0; top: 0; width: 200%; height: 20px; animation: wave354 6s linear infinite; }
.pool354 .liq { position: absolute; left: 0; right: 0; top: 14px; bottom: 0; background: linear-gradient(#8e0f16, #3a0206); box-shadow: 0 -10px 40px rgba(194,29,36,.5); }
@keyframes wave354 { to { transform: translateX(-50%); } }
.emerge354 { position: absolute; bottom: 0; width: 90px; height: 150px; animation: emerge354 5s ease-in-out forwards; }
.emerge354 svg { width: 100%; height: 100%; display: block; }
@keyframes emerge354 { 0% { transform: translateY(100%); } 40%, 60% { transform: translateY(15%); } 100% { transform: translateY(100%); } }

/* SCP-1730 */
.sectors { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin: 10px 0; }
.sectors span { padding: 8px 4px; font-size: 10px; letter-spacing: .1em; text-align: center; border: 1px solid var(--line-2); color: var(--text-dim); transition: background .4s, border-color .4s, color .4s; }
.sectors span.lost { background: rgba(194,29,36,.25); border-color: var(--red); color: #ff8a8f; }
.sectors.gone span { opacity: 0; transform: scale(.6); transition: opacity 1.5s, transform 1.5s; }

/* SCP-2030: plansza bez migotania */
.bars2030 { position: fixed; inset: 0; z-index: 945; pointer-events: none; display: flex; align-items: center; justify-content: center; background: linear-gradient(90deg, #b8b8b8 0 14.28%, #b8b800 0 28.57%, #00b8b8 0 42.85%, #00b800 0 57.14%, #b800b8 0 71.42%, #b80000 0 85.71%, #0000b8 0); }
.bars2030 b { font-family: Georgia, serif; font-size: clamp(40px, 9vw, 110px); color: #fff8d0; text-shadow: 0 0 20px #ff2a8a, 4px 4px 0 #7a1a4a; }
.bug2030 { position: fixed; top: 110px; right: 18px; z-index: 600; pointer-events: none; padding: 4px 10px; font-family: Georgia, serif; font-weight: 700; font-size: 13px; color: #fff8d0; background: rgba(122,26,74,.85); border: 1px solid #ff5ab0; }

/* SCP-2316 */
.recite-big { font-family: var(--head); font-size: 20px; letter-spacing: .12em; color: var(--accent); }
.doc-text p.recite { color: #9fb2a8; font-style: italic; letter-spacing: .04em; animation: docIn 1.2s ease; }
.doc-text p.hear { color: #ff8a8f; margin: 0 0 4px; animation: docIn 1s ease both; }

/* SCP-2399 */
.sig2399 pre { margin: 0; min-height: 150px; font-family: var(--mono); font-size: 12.5px; line-height: 1.55; color: #ffb060; white-space: pre-wrap; }
.sig2399 .repair { margin-top: 10px; font-size: 12px; letter-spacing: .1em; color: var(--text-dim); }

/* SCP-2718 */
.rd2718 { background: #000; color: transparent; border-radius: 1px; -webkit-user-select: none; user-select: none; box-decoration-break: clone; -webkit-box-decoration-break: clone; }

/* SCP-2935 */
body.frozen .view { filter: grayscale(1) brightness(.85); transition: filter 8s; }
body.frozen .ticker-track, body.frozen .fx-noise, body.frozen .fx-scan, body.frozen .dot, body.frozen .figure.glitchy .fig-frame img { animation-play-state: paused; }
body.frozen .dot { background: #555; box-shadow: none; }

/* SCP-3000 */
.deep3000 { position: fixed; inset: 0; z-index: 570; pointer-events: none; background: radial-gradient(ellipse at 50% 30%, rgba(4,20,30,.6), rgba(0,4,8,.97)); opacity: 0; transition: opacity 3s; }
.deep3000 img { position: absolute; left: 50%; top: 55%; width: 120vmin; transform: translate(-50%, -50%); opacity: 0; mix-blend-mode: screen; transition: opacity 20s; }
.deep3000.eye img { opacity: .18; }

/* SCP-3001 */
.void3001 { position: fixed; inset: 0; z-index: 570; pointer-events: none; background: radial-gradient(ellipse at center, transparent 30%, rgba(120,10,6,.85) 100%); opacity: 0; transition: opacity 4s; }
.log3001 pre { margin: 0; min-height: 170px; font-family: var(--mono); font-size: 13px; line-height: 1.6; color: #ff8a80; white-space: pre-wrap; }
.log3001 .lamp { display: inline-block; width: 9px; height: 9px; margin-left: 6px; border-radius: 50%; background: #ff2a1a; box-shadow: 0 0 12px #ff2a1a; vertical-align: middle; animation: caret 1.4s steps(1) infinite; }

/* SCP-4666 */
.snow4666 { position: fixed; inset: 0; z-index: 576; pointer-events: none; overflow: hidden; }
.snow4666 i { position: absolute; top: -10px; border-radius: 50%; background: #eef4fa; opacity: .85; animation: fall linear infinite; }
@keyframes fall { to { transform: translate(40px, 105vh); } }
.frost4666 { position: fixed; inset: 0; z-index: 575; pointer-events: none; box-shadow: inset 0 0 160px rgba(200,225,255,.55); opacity: 0; transition: opacity 20s; }
.night4666 { position: fixed; inset: 0; z-index: 940; pointer-events: none; background: #000; opacity: 0; transition: opacity 1.2s; }

/* SCP-096: twarz na pierwszym planie, terminal się sypie (czerwone pulsowanie poniżej 3 błysków na sekundę) */
.pop096 { position: fixed; inset: 0; z-index: 960; display: flex; align-items: center; justify-content: center; pointer-events: none; background: rgba(40,0,0,.6); animation: popBg096 .45s steps(1) infinite; transition: opacity .45s; }
@keyframes popBg096 { 50% { background: rgba(120,0,6,.6); } }
.pop096 img { height: min(82vh, 820px); max-width: 92vw; object-fit: contain; border: 2px solid #c21d24; box-shadow: 0 0 90px rgba(194,29,36,.75); filter: contrast(1.3) saturate(1.3); animation: pop096 .35s cubic-bezier(.2,1.4,.4,1) both, jit096 .09s steps(2) infinite .35s; }
@keyframes pop096 { from { transform: scale(.2); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes jit096 { 0% { transform: translate(-6px, 3px) skewX(2deg); } 50% { transform: translate(7px, -4px) skewX(-3deg); } 100% { transform: translate(-3px, 5px); } }
.pop096.out { opacity: 0; }
.pop096.out img { animation: none; }
body.bug096 #app { animation: bug096 .12s steps(2) infinite; }
@keyframes bug096 { 0% { transform: translate(-14px, 6px) skewX(4deg); } 25% { transform: translate(16px, -8px) skewX(-2deg); } 50% { transform: translate(-10px, 10px) skewX(-6deg); } 75% { transform: translate(12px, -4px) skewX(3deg); } 100% { transform: translate(-6px, 2px); } }
body.bug096::after { content: ""; position: fixed; inset: 0; z-index: 955; pointer-events: none; background: repeating-linear-gradient(0deg, rgba(255,0,20,.1) 0 2px, transparent 2px 9px); animation: tear096 .25s linear infinite; }
@keyframes tear096 { to { background-position: 0 18px; } }

@media (prefers-reduced-motion: reduce) {
  body.eu352 .view, .snow4666 i, .pool354 > svg { animation: none; }
  body.bug096 #app, .pop096, .pop096 img, body.bug096::after { animation: none; }
}
