:root{color-scheme:dark;--bg:#0b0b0b;--panel:#151515;--text:#f1efec;--muted:#9a9996;--line:#2d2c2c;--accent:#f04a3a;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text)}button,a{-webkit-tap-highlight-color:transparent}button,a.button{touch-action:manipulation}a{color:inherit}button{font:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px 32px;border-bottom:1px solid var(--line)}.wordmark{text-decoration:none;letter-spacing:-1.4px;font-size:24px;line-height:1;font-weight:950;white-space:nowrap}.wordmark>span:first-child{color:var(--accent)}.edition{font-size:10px;letter-spacing:0;vertical-align:top;margin-left:6px;color:var(--muted);font-weight:400}.top-actions{display:flex;align-items:center;gap:28px}.prints{font-size:12px;text-decoration:none;color:#b3b0ad}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:12px 18px;color:var(--text);border:1px solid #494745;border-radius:4px;background:#1b1a1a;font-size:13px;font-weight:650;line-height:1.2;text-decoration:none;white-space:nowrap}.button:hover{background:#292727}.button.primary{color:#100c0b;background:var(--accent);border-color:var(--accent)}.button.primary:hover{background:#ff6656}.select-toggle[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}main{padding:0 32px}.gallery-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:28px 0 22px}h1{font-size:30px;letter-spacing:-1.3px;line-height:1;margin:0 0 9px;font-weight:900}.credit{font-size:12px;color:var(--muted);margin:0}.credit a{text-decoration:none;color:#c6c3bf}.free-note{font-family:monospace;font-size:11px;letter-spacing:1px;text-align:right;margin:0}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:7px}.free-sub{display:block;letter-spacing:0;font-family:Arial,Helvetica,sans-serif;font-size:12px;color:var(--muted);margin:7px 0 0}.gallery-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-family:monospace;font-size:10px;line-height:1.5;border-top:1px solid var(--line);padding:12px 0}.gallery-meta p{margin:0}.gallery{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.tile{position:relative;aspect-ratio:1;border:0;background:#191919;color:white;overflow:hidden;padding:0;display:block;width:100%}.tile img{display:block;object-fit:cover;width:100%;height:100%;transition:transform .18s ease,opacity .18s ease}.tile:hover img{transform:scale(1.035);opacity:.9}.tile .number{position:absolute;bottom:7px;left:8px;font-family:monospace;font-size:10px;opacity:0;text-shadow:0 1px 5px #000}.tile:hover .number,.tile:focus-visible .number{opacity:1}.checkmark{position:absolute;top:8px;right:8px;width:25px;height:25px;display:none;align-items:center;justify-content:center;border:1.5px solid #fff;background:#0005;border-radius:50%;font-size:14px;font-weight:900;box-shadow:0 1px 8px #0006}.selecting .checkmark,.tile.is-selected .checkmark{display:flex}.tile.is-selected{outline:3px solid var(--accent);outline-offset:-3px}.tile.is-selected img{opacity:.65}.tile.is-selected .checkmark{border-color:var(--accent);background:var(--accent);color:#111}.tile-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:10px;font-size:11px;color:var(--muted);text-align:center}.load-wrap{display:flex;justify-content:center;margin:30px 0}footer{border-top:1px solid var(--line);margin:40px 0 0;padding:20px 0 40px;color:#777673;font-size:11px;line-height:1.7}footer p{margin:4px 0}.source-link{color:#b0adab;text-decoration:none}.selection-bar{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:24px;background:#171616f5;border-top:1px solid #3d3938;padding:14px 24px calc(14px + env(safe-area-inset-bottom));z-index:30;backdrop-filter:blur(16px)}.selection-bar strong{font-size:14px}.selection-bar span#selection-limit{display:block;font-size:11px;color:var(--muted);margin-top:4px}.text-button{background:none;border:0;color:#c8c4c0;min-height:44px;font-size:12px;text-decoration:underline;padding:8px}.selecting{padding-bottom:95px}dialog{padding:0;color:var(--text);border:1px solid var(--line);background:var(--bg)}dialog::backdrop{background:#000e}.lightbox{position:fixed;inset:0;width:100%;max-width:100%;height:100%;max-height:100dvh;border:0;margin:0;overflow:hidden}.lightbox[open]{display:flex;flex-direction:column}.lightbox-top{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0;padding:10px 20px;color:var(--muted);font-family:monospace;font-size:12px}.icon-button{display:flex;align-items:center;justify-content:center;background:transparent;color:white;border:0;min-width:44px;min-height:44px;font-size:30px}.photo-stage{position:relative;min-height:0;flex:1;display:flex;align-items:center;justify-content:center;touch-action:pan-y pinch-zoom}.photo-stage>img{width:100%;height:100%;object-fit:contain;user-select:auto;-webkit-touch-callout:default}.arrow{position:absolute;z-index:2;border-radius:50%;background:#1118;font-size:40px;width:46px;height:46px}.prev{left:12px}.next{right:12px}.lightbox-bottom{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px 20px;flex-shrink:0;padding:20px 28px calc(20px + env(safe-area-inset-bottom));background:#111}.photo-details strong{display:block;font-size:14px}.photo-details span{display:block;color:var(--muted);font-size:11px;margin-top:6px}.photo-actions{display:flex;gap:10px}.save-hint{grid-column:1/-1;font-size:11px;color:var(--muted);margin:0;line-height:1.6}.save-hint a{margin-left:12px;color:#c6c3bf}#image-error{position:absolute;padding:24px;text-align:center;background:#111}.download-dialog{width:min(480px,calc(100% - 32px));border-radius:10px;padding:22px 26px;max-height:90dvh;overflow-y:auto}.download-top{display:flex;align-items:center;justify-content:space-between}.eyebrow{color:var(--accent);font:10px monospace;letter-spacing:2px}.download-dialog h2{font-size:27px;letter-spacing:-.8px;margin:12px 0}.download-dialog p{font-size:13px;line-height:1.6;color:var(--muted)}.download-dialog progress{width:100%;accent-color:var(--accent);height:5px}.download-dialog .download-status{color:#ddd9d4;font-size:12px;min-height:20px}#ready-actions .button{width:100%;margin-bottom:10px}.download-explainer{font-size:12px!important}#fallback-links{padding-left:18px;line-height:2;font-size:13px}.toast{position:fixed;bottom:110px;left:50%;transform:translateX(-50%);z-index:100;padding:12px 18px;width:max-content;max-width:90vw;border:1px solid #55403b;border-radius:5px;background:#2a1c18;font-size:12px;color:white}.no-script{padding:20px}@media(min-width:1600px){.gallery{grid-template-columns:repeat(7,minmax(0,1fr))}}@media(max-width:1050px){.gallery{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:650px){.topbar{padding:18px 14px;gap:12px}.wordmark{font-size:20px;letter-spacing:-1.2px}.edition{font-size:8px;margin-left:4px}.top-actions{gap:12px}.prints{font-size:10px}.select-toggle{font-size:11px;padding:10px 12px;min-height:40px}main{padding:0 8px}.gallery-heading{padding:22px 6px 19px;gap:12px}h1{font-size:25px}.credit{font-size:10px}.free-note{font-size:9px;letter-spacing:.5px}.free-sub{font-size:10px}.gallery-meta{font-size:9px;padding:11px 6px}.gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.checkmark{top:6px;right:6px;width:24px;height:24px}.tile .number{display:none}.selection-bar{gap:10px;padding:12px 12px calc(12px + env(safe-area-inset-bottom));justify-content:space-between}.selection-bar strong{font-size:12px}.selection-bar span#selection-limit{font-size:9px}.selection-bar .button{font-size:11px;padding:13px 12px}.selection-bar .text-button{font-size:11px;padding:3px}.lightbox-top{padding:5px 12px}.lightbox-bottom{grid-template-columns:1fr;padding:15px 16px calc(15px + env(safe-area-inset-bottom));gap:12px}.photo-details{display:flex;justify-content:space-between;gap:10px;align-items:center}.photo-details strong{font-size:12px}.photo-details span{font-size:9px;margin:0;text-align:right;max-width:160px}.photo-actions .button{flex:1;min-height:48px}.photo-actions .primary{flex:2}.save-hint{font-size:10px}.save-hint a{display:inline-block;margin-left:5px}.arrow{width:36px;height:44px;min-width:36px;font-size:32px}.prev{left:4px}.next{right:4px}footer{margin-top:28px;padding:18px 6px 28px;font-size:10px}.download-dialog{padding:18px 20px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Fixed 96-drop pool: normal 28/20 desktop/mobile, opt-in hardcore 96/64. */
.blood-rain{position:fixed;inset:0;pointer-events:none;z-index:10;overflow:hidden;opacity:var(--rain-strength,.9);transition:opacity 2.2s ease}.blood-drop{position:absolute;left:var(--x);top:-30px;width:var(--size);height:calc(var(--size) * 1.7);animation:rainfall var(--duration) var(--delay) linear infinite}.rain-shape{display:block;overflow:visible;width:100%;height:100%;color:var(--drop-red);transform-origin:50% 55%;transform:rotate(var(--tilt)) skewX(var(--shear)) scale(var(--sx),var(--sy));animation:droplet-flex var(--flex-duration) var(--delay) ease-in-out infinite alternate}@keyframes droplet-flex{to{transform:rotate(calc(var(--tilt) + 3deg)) skewX(calc(var(--shear) * -.65)) scale(calc(var(--sx) * .96),calc(var(--sy) * 1.04))}}@keyframes rainfall{0%{translate:0 -20px;opacity:0}4%{opacity:calc(.95 * var(--drop-alpha,1))}80%{opacity:calc(.85 * var(--drop-alpha,1))}100%{translate:7px 105vh;opacity:0}}.rain-off .blood-rain{visibility:hidden}.rain-off .blood-drop,.rain-off .rain-shape{animation-play-state:paused}.blood-rain[data-intensity=light] .blood-drop:nth-child(2n){--drop-alpha:.18}.lightbox>.blood-rain{z-index:2}.lightbox>.pointer-blood{z-index:3}.lightbox-top,.lightbox-bottom{position:relative;z-index:4}.lightbox .photo-stage{z-index:auto}.lightbox .blood-frame{z-index:1}.lightbox .arrow,.lightbox #image-error{z-index:4}.motion-toggle{border:0;background:transparent;color:#d85543;min-width:36px;min-height:40px;font-size:18px;padding:0}.motion-toggle[aria-pressed=false]{color:#666}@media(max-width:650px){.top-actions{gap:6px}.motion-toggle{min-width:28px}.blood-rain{opacity:calc(var(--rain-strength,.9) * .9)}.blood-rain:not(.hardcore) .blood-drop:nth-child(n+21){display:none}.blood-rain.hardcore .blood-drop:nth-child(n+65){display:none}}
/* This red layer is BEHIND the full clean photo; it cannot cover image pixels. */
.blood-frame{position:relative;box-sizing:content-box;flex-shrink:0;width:80%;height:90%;border:0;isolation:isolate}.blood-frame img{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;user-select:auto;-webkit-touch-callout:default}.blood-pool{position:absolute;z-index:-1;inset:-10px -13px -15px -9px;pointer-events:none;background:linear-gradient(140deg,#ed5944 0%,#a71e18 13%,#7a0f0e 45%,#c12e22 65%,#8c1512 100%);filter:drop-shadow(0 2px 1px #520907);clip-path:polygon(0 5px,12% 0,26% 5px,42% 2px,58% 6px,72% 0,88% 4px,100% 2px,calc(100% - 5px) 20%,100% 40%,calc(100% - 3px) 63%,100% 83%,calc(100% - 2px) calc(100% - 2px),82% 100%,68% calc(100% - 5px),48% 100%,30% calc(100% - 3px),14% 100%,0 calc(100% - 3px),4px 78%,0 57%,5px 35%);animation:bloodpool 7s ease-in-out infinite alternate}.blood-frame:before{content:"";position:absolute;z-index:-1;top:-20px;left:23%;width:13px;height:18px;border-radius:65% 45% 70% 55%;background:linear-gradient(100deg,#e44b37,#7e110d);box-shadow:inset 2px 1px 1px #ef6b5655;transform-origin:bottom;animation:bloodbead 8s ease-in-out infinite;pointer-events:none}.blood-frame:after{content:"";position:absolute;z-index:-1;bottom:-21px;right:17%;height:12px;width:9px;border-radius:0 0 70% 70%;background:#a32419;pointer-events:none}@keyframes bloodpool{to{clip-path:polygon(0 1px,12% 5px,26% 0,42% 6px,58% 1px,72% 5px,88% 0,100% 5px,100% 20%,calc(100% - 5px) 40%,100% 63%,calc(100% - 4px) 83%,100% calc(100% - 5px),82% calc(100% - 4px),68% 100%,48% calc(100% - 5px),30% 100%,14% calc(100% - 4px),3px 100%,0 78%,5px 57%,0 35%)}}@keyframes bloodbead{0%,100%{transform:scale(.55);opacity:.75}65%{transform:scale(1);opacity:1}80%{transform:scale(.7,1.25);opacity:1}90%{transform:scale(.6,.5);opacity:.8}}
.close-effect{position:fixed;z-index:1000;pointer-events:none;transform-origin:top left;isolation:isolate}.close-half{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.slash-clip{position:absolute;inset:0;overflow:hidden;pointer-events:none}.close-slash{position:absolute;top:50%;left:50%;height:4px;border-radius:100%;background:linear-gradient(90deg,transparent,#d0231a 12%,#ff5742 70%,#fff0d8 95%,#ff8c65);box-shadow:0 0 10px #f6402c,0 0 2px #ffdfb0;transform-origin:center;pointer-events:none}
@media(max-width:799px){.close-effect{display:none}}@media(prefers-reduced-motion:reduce){.blood-rain,.close-effect{display:none}.blood-drop,.rain-shape,.blood-pool,.blood-frame:before{animation:none}}

@media(max-width:650px){.selection-bar{gap:6px}.selection-bar .button{padding:13px 9px;font-size:10px}.selection-bar .text-button{padding:3px;min-width:30px}}
.gallery-navigation{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:160px minmax(0,1fr);gap:30px;align-items:start;background:#0b0b0bf7;padding:10px 0 12px;border-bottom:1px solid var(--line);margin-bottom:10px;backdrop-filter:blur(12px)}.gallery-navigation label{display:block;font-size:10px;line-height:16px;color:var(--muted)}.order-control select{width:100%;min-height:44px;margin-top:2px;border:1px solid #47413f;border-radius:4px;background:#171515;color:var(--text);padding:0 12px;font:12px Arial,Helvetica,sans-serif}.jump-label{display:flex;justify-content:space-between;align-items:center;gap:10px}.jump-label output{font:10px monospace;color:#c8b6b2;white-space:nowrap}#photo-jump{display:block;width:100%;height:44px;margin:2px 0 0;accent-color:var(--accent);cursor:pointer;touch-action:pan-y}#photo-jump::-webkit-slider-thumb{min-width:22px;min-height:22px}#photo-jump:focus-visible,.order-control select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gallery,.tile{scroll-margin-top:88px}@media(max-width:650px){.gallery-navigation{grid-template-columns:118px minmax(0,1fr);gap:15px;padding:8px 6px 10px}.gallery-navigation label{font-size:9px}.order-control select{font-size:11px;padding:0 7px}.jump-label{gap:6px}.jump-label output{font-size:9px}.selection-bar .text-button{min-width:40px}.gallery,.tile{scroll-margin-top:86px}}

body{padding-bottom:calc(90px + env(safe-area-inset-bottom))}.browse-actions{position:fixed;left:20px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:30}.browse-actions .button{min-height:48px;min-width:145px;background:#251411;border-color:#b04739;box-shadow:0 5px 25px #0009;color:#f5d6d0;font-size:13px}.browse-actions .button:hover{background:#3c1b15}@media(max-width:650px){.browse-actions{left:14px;bottom:calc(14px + env(safe-area-inset-bottom))}.browse-actions .button{min-height:48px;padding:12px 18px}.selection-bar .text-button{min-width:40px}}

/* Shallow static bottom pool; behind controls, above background, never over photo modals. */
body:after{content:"";position:fixed;bottom:0;left:0;right:0;height:24px;z-index:11;pointer-events:none;background:linear-gradient(#8f2019,#4c090a 70%);clip-path:polygon(0 8px,5% 4px,14% 8px,24% 2px,37% 7px,49% 4px,62% 9px,75% 1px,86% 6px,95% 3px,100% 7px,100% 100%,0 100%);opacity:.84}.pointer-blood{position:fixed;inset:0;z-index:50;pointer-events:none;overflow:hidden}.pointer-drop{position:absolute;height:7px;border-radius:65% 20% 65% 65%;background:#bc2b20;opacity:0;pointer-events:none}.edge-pool{position:absolute;width:48px;height:24px;border-top:4px solid #b02b21;border-left:4px solid #9d211a;border-radius:12px 80% 60% 60%;opacity:0;transform-origin:top left;pointer-events:none;filter:drop-shadow(0 1px 2px #650c0b55)}.edge-pool.right{border-left:0;border-right:4px solid #9d211a;border-radius:80% 12px 60% 60%;transform-origin:top right}.edge-pool.bottom{border-top:0;border-bottom:4px solid #b02b21;border-radius:60% 60% 80% 12px;transform-origin:bottom left}.edge-pool.bottom.right{border-radius:60% 60% 12px 80%;transform-origin:bottom right}
@media(hover:hover) and (pointer:fine){.blood-pointer-on,.blood-pointer-on *{cursor:url('./cursor-red.svg') 3 2,auto}.blood-pointer-on button,.blood-pointer-on button *,.blood-pointer-on a,.blood-pointer-on a *,.blood-pointer-on select,.blood-pointer-on input[type=range]{cursor:url('./cursor-pointer.svg') 12 3,pointer}.blood-pointer-on button:disabled{cursor:not-allowed}}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.pointer-blood{display:none}}

/* Hardcore is opt-in. Reuse the same pool; no per-frame JS or added timers. */
.blood-rain:not(.hardcore) .blood-drop:nth-child(n+29){display:none}.blood-rain.hardcore .blood-drop{width:calc(var(--size) * 1.9);height:calc(var(--size) * 3.23);animation-duration:calc(var(--duration) * .6)}.blood-rain.hardcore[data-intensity=light] .blood-drop:nth-child(2n){--drop-alpha:.65}.hardcore-toggle{min-height:44px;min-width:92px;padding:8px 10px;border:1px solid #64302c;border-radius:4px;background:#19100f;color:#c1a3a0;font-size:11px;font-weight:700;white-space:nowrap}.hardcore-toggle[aria-pressed=true]{background:#9d1e16;color:#fff0eb;border-color:#e74836;box-shadow:0 0 14px #b51e1228}.hardcore-toggle:disabled{opacity:.4;cursor:not-allowed}.top-actions{gap:10px}.motion-toggle{min-width:44px;min-height:44px}@media(max-width:650px){.topbar{gap:8px}.top-actions{gap:5px}.hardcore-toggle{min-width:80px;padding:8px;font-size:10px}.motion-toggle{min-width:44px}}

.unedited-gallery-link{display:inline-flex;align-items:center;min-height:44px;padding:8px 0;color:#b4adaa;font-size:11px;line-height:1.6;text-decoration:underline;text-underline-offset:3px}.unedited-gallery-link:hover{color:#f1dbd5}

/* Canvas replaces the animated SVG DOM pool; opacity and density are rendered per particle. */
.blood-rain{opacity:1;transition:none}.rain-canvas{display:block;width:100%;height:100%;pointer-events:none}@media(max-width:650px){.blood-rain{opacity:1}}

/* Rounded OUTER blood pool; the photo itself remains rectangular and uncropped. */
.blood-frame{background:#170b0b}.blood-pool{inset:-18px -22px -23px -20px;border-radius:48px 56px 46px 52px}.blood-frame:after{display:none}.frame-bottom-drip{position:absolute;z-index:-1;left:50%;bottom:-27px;width:8px;height:11px;background:#a6241b;border-radius:55% 45% 70% 60%;transform:translateX(-50%) scale(.45,.4);transform-origin:top center;opacity:.7;pointer-events:none}.rain-off .blood-pool,.rain-off .blood-frame:before{animation-play-state:paused}@media(prefers-reduced-motion:reduce){.frame-bottom-drip{animation:none}}

/* About3.5× pooled footprint on roomy controls; clamp to each control to keep labels clear. */
.edge-pool{width:90px;height:45px;border-top-width:7px;border-left-width:7px}.edge-pool.right{border-right-width:7px}.edge-pool.bottom{border-bottom-width:7px}

@media(max-width:650px){.photo-actions .button{padding:12px 8px;font-size:11px}}

/* Display-only photo mask follows the pooled frame's inset rounded contour.
   Thumbnails and all original download bytes remain unchanged. */
.blood-frame img,.close-half{border-radius:28px 34px 24px 32px / 30px 38px 23px 29px}

.year-gallery-links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:-7px 0 4px}.year-gallery-links a{display:inline-flex;align-items:center;min-height:44px;color:#b4adaa;font-size:11px;text-decoration:underline;text-underline-offset:3px}.year-gallery-links a:hover{color:#f1dbd5}@media(max-width:650px){.year-gallery-links{padding:0 6px;gap:8px 22px}}

/* Fit-width is an in-dialog viewing mode, never a browser fullscreen or file edit. */
.viewer-tools{display:flex;align-items:center;gap:12px}.viewer-tools .text-button{font-family:Arial,Helvetica,sans-serif;color:#d9c6c2;white-space:nowrap;min-height:44px}.photo-scroll{display:flex;align-items:center;justify-content:center;align-self:stretch;width:100%;height:100%;min-height:0;overflow:hidden}.photo-scroll:focus-visible{outline:2px solid #e74836;outline-offset:-2px}.lightbox .arrow{top:50%;transform:translateY(-50%)}.is-fit-width .photo-scroll{display:block;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;overscroll-behavior:contain;touch-action:pan-y pinch-zoom}.is-fit-width .blood-frame{margin:32px auto 48px}.is-fit-width .photo-stage{overflow:hidden}@media(max-width:650px){.viewer-tools{gap:6px}.viewer-tools .text-button{font-size:11px;padding:8px}}
.is-fit-width .blood-frame{overflow-x:clip;overflow-y:visible}
.lightbox-top{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right));padding-top:max(10px,env(safe-area-inset-top))}.lightbox-bottom{padding-left:max(28px,env(safe-area-inset-left));padding-right:max(28px,env(safe-area-inset-right))}.lightbox .prev{left:max(12px,env(safe-area-inset-left))}.lightbox .next{right:max(12px,env(safe-area-inset-right))}@media(max-width:650px){.lightbox-top{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));padding-top:max(5px,env(safe-area-inset-top))}.lightbox-bottom{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.lightbox .prev{left:max(4px,env(safe-area-inset-left))}.lightbox .next{right:max(4px,env(safe-area-inset-right))}}

.year-gallery-links a[aria-current="page"]{color:#fff;text-decoration:underline;text-decoration-color:#bf1727;text-underline-offset:5px}.media-note{font-size:.78rem;color:#b4a9aa;margin:.5rem 0 1rem;max-width:60rem}

.media-filters{display:flex;gap:6px;flex-wrap:wrap;margin:5px 0 8px}.media-filter{min-height:44px;min-width:70px;padding:0 15px;background:#171515;color:#bfb3b4;border:1px solid #3f3335;border-radius:6px;font:12px Arial,sans-serif}.media-filter[aria-pressed="true"]{color:#fff;background:#531019;border-color:#d42940}.media-filter:focus-visible{outline:2px solid #ff5848;outline-offset:2px}.empty-filter{padding:48px 18px 65px;text-align:center;color:#c9babc;font-size:14px}#selection-hidden{color:#efb5ba;font-size:10px}.media-filters[hidden],.empty-filter[hidden]{display:none}

.blood-frame video{display:block;width:100%;height:100%;object-fit:contain;border-radius:28px 34px 24px 32px /30px 38px 23px 29px;background:#090909}.blood-frame video[hidden],.blood-frame img[hidden]{display:none}.media-badge{position:absolute;left:7px;bottom:7px;padding:4px 6px;background:#080808c9;color:#fff;font:9px Arial,sans-serif;border-radius:3px;z-index:1;pointer-events:none}

.organizers-panel{padding:12px 0;border-bottom:1px solid #3f3335}.organizers-panel summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.organizers-panel p{color:#bfb3b4;font-size:12px}#organizer-names{display:flex;gap:22px;padding:10px 0}.organizers-panel[hidden]{display:none}

.bloody-filter-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
/* Only the modal still image (and optional closing clones); never parent or video. */
#full-photo.is-bloody[data-bloody-filter="br-bloody-1"],.close-half.is-bloody[data-bloody-filter="br-bloody-1"]{filter:url("#br-bloody-1")}
#full-photo.is-bloody[data-bloody-filter="br-bloody-2"],.close-half.is-bloody[data-bloody-filter="br-bloody-2"]{filter:url("#br-bloody-2")}
#full-photo.is-bloody[data-bloody-filter="br-bloody-3"],.close-half.is-bloody[data-bloody-filter="br-bloody-3"]{filter:url("#br-bloody-3")}
#full-photo.is-bloody[data-bloody-filter="br-bloody-4"],.close-half.is-bloody[data-bloody-filter="br-bloody-4"]{filter:url("#br-bloody-4")}
#full-photo.is-bloody[data-bloody-filter="br-bloody-5"],.close-half.is-bloody[data-bloody-filter="br-bloody-5"]{filter:url("#br-bloody-5")}
.bloody-toggle{min-height:44px;padding:8px 10px;white-space:nowrap}
.bloody-toggle[aria-pressed="true"]{color:#ffd9d5;text-decoration-color:#f43b3f;background:#521018;border-radius:4px}
.bloody-look-label{font-size:10px;color:#efd3ce;white-space:nowrap}
.bloody-preview-note{font-size:10px;color:#c8afab;line-height:1.4}
/* Deliberately no transitions, animation, will-change, blur or extra layers. */

.bloody-controls{display:flex;align-items:center;justify-content:center;gap:8px}.bloody-controls .bloody-preview-note{max-width:130px}.bloody-controls[hidden]{display:none}@media(max-width:650px){.lightbox-top{flex-wrap:wrap;gap:0 8px}.bloody-controls{order:3;flex-basis:100%;justify-content:flex-start;gap:10px}.bloody-controls .bloody-preview-note{margin-left:auto;max-width:132px;font-size:9px}.bloody-toggle{font-size:11px}}

.credit{font-size:10px;line-height:1.3}.credit a{display:inline-flex;align-items:center;min-height:44px;min-width:44px;color:#aaa3a0;font-size:10px}@media(max-width:650px){.credit,.credit a{font-size:9px}}

.toast{pointer-events:none}.lightbox .toast,.download-dialog .toast{z-index:8}

/* Slow background-only atmosphere: text, controls, media and red blood stay unchanged. */
.topbar{flex-wrap:wrap}.top-actions{margin-left:auto}
@keyframes ambient-room{0%,100%{background-color:#0b0b0b}38%{background-color:#110c0c}72%{background-color:#0d0d0f}}
body.ambient-light,.ambient-light .lightbox,.ambient-light .photo-stage{animation:ambient-room 14s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){body.ambient-light,.ambient-light .lightbox,.ambient-light .photo-stage{animation:none}}
/* Accumulation stays on the rim, outside labels. Fixed four reused puddles. */
.edge-pool{border:0!important;border-radius:45% 68% 35% 58%;background:linear-gradient(#df4431,#8a1612 80%);filter:drop-shadow(0 1px 1px #5c090a88);transform-origin:center;opacity:0}
.edge-pool:after{content:"";position:absolute;display:none;top:1px;width:4px;height:13px;background:linear-gradient(#b92a20,#83110e);border-radius:35% 35% 70% 65%}
.edge-pool.corner-left:after{display:block;left:0}.edge-pool.corner-right:after{display:block;right:0}.edge-pool.bottom:after{height:10px}
/* Pointer-only rim deposits can sit above modal chrome; all decoration ignores input.
   Pools stay outside labels, and text deposits sit below the measured line box. */
.lightbox>.pointer-blood{z-index:5}.edge-pool.text-pool:after,.edge-pool.scrollbar-pool:after{display:none}
.edge-pool.text-pool{filter:none}.edge-pool.scrollbar-pool{border-radius:60% 45% 70% 40%}
::selection{background:#8c1518;color:#fff0ed;text-shadow:none}

/* Native cursor semantics, fixed32px authored teeth, matched hotspot for a steady bite. */
@media(hover:hover) and (pointer:fine){
 body.blood-fangs-on :is(button,button *,a[href],a[href] *,select,summary,summary *,[role=button],[role=button] *,input[type=range]),body.blood-fangs-on #photo-jump{cursor:url('./cursor-fangs-open.svg') 16 16,pointer}
 body.blood-fangs-on.blood-bite-down :is(button,button *,a[href],a[href] *,select,summary,summary *,[role=button],[role=button] *,input[type=range]),body.blood-fangs-on.blood-bite-down #photo-jump{cursor:url('./cursor-fangs-closed.svg') 16 16,pointer}
 body.blood-fangs-on :is(button:disabled,button:disabled *,select:disabled,input:disabled,[aria-disabled=true]){cursor:not-allowed}
 body.blood-fangs-on video{cursor:auto}
}

/* Random navigation precedes identity; selection and saving stay together. */
.photo-identity{display:flex;align-items:center;gap:14px;min-width:0}.photo-identity .photo-details{min-width:0}.photo-identity #random-photo{flex:none;font-size:11px;padding:10px 12px}.photo-details strong{overflow-wrap:anywhere}@media(max-width:650px){.photo-identity{gap:12px}.photo-identity .photo-details{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.photo-identity .photo-details span{text-align:left;max-width:none}.photo-identity #random-photo{min-height:44px}}

.modal-credit{display:inline-flex;align-items:center;min-height:44px;font-size:11px;color:#b5b1ad;text-decoration:none}.modal-credit:hover{text-decoration:underline}.photo-details .modal-credit+span{margin-top:0}@media(max-width:650px){.photo-identity .photo-details{gap:0}.modal-credit{font-size:10px}}

/* Independent corner badges, not a popularity border. Top corners stay free for selection/media type. */
.popularity-badge{position:absolute;bottom:6px;z-index:3;display:flex;align-items:center;justify-content:center;width:27px;height:27px;font:17px/1 Arial,sans-serif;background:#0b0b0bdd;border:1px solid #d6c08f70;border-radius:5px;pointer-events:none;user-select:none}.popular-views{left:6px}.popular-downloads{right:6px}.tile .checkmark{z-index:4}.tile .media-badge{z-index:3;top:6px;bottom:auto;left:6px}.tile .number{bottom:10px;left:38px;z-index:3}
.metrics-note,.metrics-status{max-width:64rem;font-size:11px;line-height:1.5;margin:4px 0 12px;color:#bdb2b1}.metrics-status{color:#e2c5c4}.metrics-note{font-size:10px;color:#a69b9c}
@media(max-width:650px){.metrics-note,.metrics-status{padding:0 6px}.popularity-badge{width:25px;height:25px;font-size:16px;bottom:4px}.popular-views{left:4px}.popular-downloads{right:4px}}


.save-look{color:#ff8370;border:1px solid #84372c;border-radius:6px;animation:look-arrive .35s ease-out}.save-look[hidden]{display:none}@keyframes look-arrive{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.look-export-panel{position:absolute;z-index:6;inset:72px 20px 108px;background:#100c0df5;border:1px solid #79342b;border-radius:18px;padding:18px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center}.look-export-panel[hidden]{display:none}.look-export-panel h2{margin:0;font-size:22px}.look-export-panel p{margin:0;max-width:660px;line-height:1.45}.look-export-panel progress{width:min(440px,100%)}.look-export-panel img{display:block;max-width:100%;width:auto;max-height:52vh;object-fit:contain;flex-shrink:1;min-height:80px}.look-export-panel img[hidden]{display:none}.look-export-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.look-export-footnote{font:12px/1.5 Arial,sans-serif;color:#b9a9a6}.look-export-actions .text-button{min-height:44px;display:inline-flex;align-items:center}.save-look:disabled{opacity:.5}@media(max-width:650px){.bloody-controls{flex-wrap:wrap;gap:3px}.save-look{font-size:10px;padding:4px 6px}.look-export-panel{inset:78px 8px 116px;padding:12px}.look-export-panel img{max-height:38vh}}@media(prefers-reduced-motion:reduce){.save-look{animation:none}}

/* One original-save action: fresh second tap on iOS, native download elsewhere. */
.photo-actions.has-original-save{display:flex}.photo-actions.has-original-save .button{min-height:44px}.original-share-state{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;font-size:11px;line-height:1.5;color:var(--muted)}.original-share-state p{margin:0}.original-share-state progress{grid-column:1/-1;grid-row:2;width:100%;height:4px;accent-color:var(--accent);margin-top:6px}.original-share-state .text-button{grid-column:2;grid-row:1;min-height:32px;padding:4px 0;font-size:11px}

/* Keep the new sharing utility area bounded on short landscape screens. */
@media(min-width:651px) and (max-height:500px){
 .lightbox-bottom.has-original-save{padding-top:8px;padding-bottom:max(8px,env(safe-area-inset-bottom));gap:8px 16px;max-height:40vh;max-height:40dvh;overflow-y:auto;overscroll-behavior:contain}
 .photo-actions.has-original-save{display:flex;gap:8px}
 .photo-actions.has-original-save #save-photo{min-height:44px;padding:10px 12px}
}
