/* Sabeti Lab · Holiday Cards — skins (split from app.css; see ARCHITECTURE.md) */
/* ═══════════ GALLERY SKINS ═══════════ */
/* tape – camp scrapbook on a denim board */
.skin-tape .stage{background:linear-gradient(135deg,rgba(255,255,255,.04) 0 2px,transparent 2px 6px),linear-gradient(45deg,rgba(255,255,255,.03) 0 2px,transparent 2px 6px),var(--bg)}
.skin-tape .item-frame{padding:10px 10px 12px;background:#faf7f1;border-radius:2px}
.skin-tape .item-frame::before,.skin-tape .item-frame::after{content:"";position:absolute;top:-10px;width:74px;height:22px;background:rgba(232,220,190,.8);box-shadow:0 2px 4px rgba(0,0,0,.2);transform:rotate(-6deg)}
.skin-tape .item-frame::before{left:-22px}.skin-tape .item-frame::after{right:-22px;transform:rotate(7deg)}
.skin-tape .item.video .item-frame::before,.skin-tape .item.video .item-frame::after{display:none}
/* album – lace-edged scrapbook */
.skin-album .stage{background:radial-gradient(ellipse at 50% 120%,rgba(255,255,255,.08),transparent 60%),var(--bg)}
.skin-album .item-frame{padding:12px;background:#f7efe2;border:1px solid rgba(0,0,0,.08)}
.skin-album .item-frame::before{content:"";position:absolute;inset:-9px;border:9px dotted var(--accent);opacity:.65;border-radius:6px;pointer-events:none}
.skin-album .item.video .item-frame::before{display:none}
/* vinyl – record sleeves in a crate */
.skin-vinyl .stage{background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 2px,transparent 2px 34px),repeating-linear-gradient(90deg,rgba(0,0,0,.12) 0 2px,transparent 2px 96px),var(--bg)}
.skin-vinyl .stage::after{content:"";position:absolute;left:0;right:0;bottom:0;height:16%;background:linear-gradient(180deg,#5a4630,#3b2c1c);box-shadow:0 -20px 60px rgba(0,0,0,.45);border-top:6px solid #6b5438}
.skin-vinyl .item-frame{padding:0;background:#111;border-radius:2px}
.skin-vinyl .item-frame img{border-radius:2px}
.skin-vinyl .item .disc{position:absolute;top:50%;right:0;width:88%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#2a2a2a 0 11%,var(--accent) 11% 21%,#111 21% 23%,transparent 23%),repeating-radial-gradient(circle,#1c1c1c 0 2px,#0b0b0b 2px 4px);transform:translateY(-50%);transition:transform .8s cubic-bezier(.2,.8,.2,1);z-index:-1;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.skin-vinyl .item.active .disc{transform:translate(42%,-50%) rotate(120deg)}
/* strings – pages hanging from a lit garland */
.skin-strings .garland{position:absolute;left:-2%;right:-2%;top:6vh;height:40px;background:radial-gradient(circle at 50% 50%,var(--accent) 0 5px,rgba(255,255,255,.0) 6px) 0 0/72px 40px repeat-x;filter:drop-shadow(0 0 10px var(--accent));opacity:.9}
.skin-strings .garland::before{content:"";position:absolute;left:0;right:0;top:19px;border-top:1px solid rgba(255,255,255,.35)}
.skin-strings .item-frame{padding:8px;background:#fff}
.skin-strings .item-frame::before,.skin-strings .item-frame::after{content:"";position:absolute;bottom:100%;width:1px;height:var(--rope,140px);background:rgba(255,255,255,.55)}
.skin-strings .item-frame::before{left:22%}.skin-strings .item-frame::after{right:22%}
.skin-strings .item{animation:sway 6s ease-in-out infinite;transform-origin:50% -140px}
/* book – pages of a storybook */
.skin-book .stage{background:radial-gradient(ellipse at 50% 30%,rgba(255,255,255,.06),transparent 60%),var(--bg)}
.skin-book .item-frame{padding:0;background:#f4ecda;border-radius:2px 6px 6px 2px}
.skin-book .item-frame::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.28),transparent 8%,transparent 92%,rgba(0,0,0,.06));border-radius:inherit}
/* board – candy path */
.skin-board .stage{background:radial-gradient(circle at 20% 80%,rgba(201,74,134,.18),transparent 30%),radial-gradient(circle at 80% 20%,rgba(120,180,240,.2),transparent 30%),var(--bg)}
.skin-board .item-frame{padding:8px;background:#fff;border-radius:10px}
.skin-board .item .disc{position:absolute;left:50%;bottom:-12%;width:120%;height:26%;transform:translateX(-50%);border-radius:50%;background:var(--tile,#c94a86);opacity:.9;z-index:-1;box-shadow:0 14px 30px rgba(0,0,0,.18)}
.skin-board .path{position:absolute;left:-5%;right:-5%;top:50%;height:0;border-top:14px dotted rgba(255,255,255,.7);opacity:.9;filter:drop-shadow(0 4px 8px rgba(0,0,0,.08))}
/* grid – video-call windows */
.skin-grid .stage{background:radial-gradient(ellipse at 50% 50%,rgba(255,255,255,.08),transparent 60%),var(--bg)}
.skin-grid .item-frame{padding:26px 6px 6px;background:#0c1220;border-radius:8px;border:1px solid rgba(255,255,255,.12)}
.skin-grid .item-frame::before{content:"";position:absolute;left:12px;top:9px;width:8px;height:8px;border-radius:50%;background:#ff5f57;box-shadow:14px 0 0 #febc2e,28px 0 0 #28c840}
.skin-grid .item.active .item-frame{box-shadow:0 0 0 2px var(--accent),0 30px 80px -20px rgba(0,0,0,.6)}
/* film – strip */
.skin-film .stage{background:radial-gradient(ellipse at 50% 30%,rgba(217,182,108,.14),transparent 55%),var(--bg)}
.skin-film .item-frame{padding:14px 26px;background:#1a130f;border-radius:4px}
.skin-film .item-frame::before,.skin-film .item-frame::after{content:"";position:absolute;top:0;bottom:0;width:14px;background:repeating-linear-gradient(180deg,transparent 0 6px,#0a0705 6px 18px,transparent 18px 24px);opacity:.9}
.skin-film .item-frame::before{left:6px}.skin-film .item-frame::after{right:6px}
.skin-film .item-frame img{filter:sepia(.18) contrast(1.04)}
/* space – drifting windows */
.skin-space .item-frame{padding:6px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(6px);box-shadow:0 0 60px -10px rgba(120,160,255,.35)}
.skin-space .item{animation:drift 9s ease-in-out infinite}
/* podium */
.skin-podium .stage{background:linear-gradient(180deg,var(--bg) 0 55%,#f6fbff 55% 100%)}
.skin-podium .podium{position:absolute;bottom:0;background:linear-gradient(180deg,#f3f7fb,#c9d8e6);border-radius:4px 4px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.08);display:grid;place-items:start center;padding-top:10px;font-family:var(--serif);font-size:clamp(22px,3vw,40px);color:var(--accent)}
.skin-podium .item-frame{padding:8px;background:#fff}
.skin-podium .item.active .item-frame::after{content:"";position:absolute;left:50%;top:-34px;width:26px;height:26px;border-radius:50%;transform:translateX(-50%);background:radial-gradient(circle at 35% 35%,#fff3b0,#d4a72c 60%,#9c7418);box-shadow:0 4px 12px rgba(0,0,0,.2)}
.skin-podium .podium.gold{font-family:var(--sans);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:#9c7418;padding-top:14px;background:linear-gradient(180deg,#fbf3d6,#e6cf8f 30%,#cfd9e4 31%,#c9d8e6)}
.skin-podium .two-gold .item .item-frame::after{content:"";position:absolute;left:50%;top:-34px;width:26px;height:26px;border-radius:50%;transform:translateX(-50%);background:radial-gradient(circle at 35% 35%,#fff3b0,#d4a72c 60%,#9c7418);box-shadow:0 4px 12px rgba(0,0,0,.2)}
/* holo – hologram projections */
.skin-holo .stage::after{content:"";position:absolute;left:50%;bottom:0;width:60vw;height:70vh;transform:translateX(-50%);background:linear-gradient(0deg,rgba(75,213,238,.35),transparent 70%);clip-path:polygon(44% 100%,56% 100%,100% 0,0 0);pointer-events:none}
.skin-holo .item-frame{padding:0;background:transparent;box-shadow:none;border:1px solid rgba(75,213,238,.5)}
.skin-holo .item-frame img{filter:sepia(1) hue-rotate(160deg) saturate(2.4) brightness(1.05);opacity:.9}
.skin-holo .item-frame::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(0,0,0,.28) 0 2px,transparent 2px 5px);pointer-events:none;animation:flicker 3s steps(1) infinite}
/* girder – hanging from a steel beam over a grey city */
.skin-girder .stage{background:linear-gradient(180deg,#b9cbdc 0,#dfe5ea 45%,#f2efe8 100%)}
.skin-girder .beam-bar{position:absolute;left:-5%;right:-5%;top:calc(6vh + 4px);height:32px;background:linear-gradient(180deg,#5b626e 0,#3b414b 25%,#262a31 30%,#30353d 78%,#1b1e24 82%,#4a505a 100%);box-shadow:0 20px 40px rgba(0,0,0,.25)}
.skin-girder .beam-bar::after{content:"";position:absolute;left:0;right:0;top:34%;height:32%;background:repeating-linear-gradient(90deg,transparent 0 46px,rgba(255,255,255,.18) 46px 52px,transparent 52px 60px)}
.skin-girder .item-frame{padding:8px;background:#fff}
.skin-girder .item-frame img{filter:grayscale(.7) contrast(1.05)}
.skin-girder .item.active .item-frame img{filter:grayscale(0)}
.skin-girder .item-frame::before,.skin-girder .item-frame::after{content:"";position:absolute;bottom:100%;width:2px;height:var(--rope,140px);background:#4a4238}
.skin-girder .item-frame::before{left:18%}.skin-girder .item-frame::after{right:18%}
.skin-girder .item{animation:sway 7s ease-in-out infinite;transform-origin:50% -140px}
/* tv – newsroom monitors */
.skin-tv .stage{background:radial-gradient(ellipse at 50% 0%,rgba(185,200,255,.22),transparent 50%),var(--bg)}
.skin-tv .item-frame{padding:14px;background:#2a2c33;border-radius:12px;box-shadow:inset 0 0 0 2px #14151a,0 30px 80px -20px rgba(0,0,0,.7)}
.skin-tv .item-frame img{border-radius:6px}
.skin-tv .item-frame::after{content:"";position:absolute;inset:14px;border-radius:6px;background:linear-gradient(115deg,rgba(255,255,255,.14),transparent 40%);pointer-events:none}
.skin-tv .item.active .item-frame::before{content:"LIVE";position:absolute;left:24px;top:22px;z-index:2;font-size:10px;letter-spacing:.24em;padding:3px 8px 3px 18px;background:rgba(0,0,0,.55);color:#fff;border-radius:3px;background-image:radial-gradient(circle,#ff3b3b 0 3px,transparent 4px);background-repeat:no-repeat;background-position:7px 50%;animation:blink 1.4s steps(1) infinite}
/* stage – neon screens and lasers */
.skin-stage .item-frame{padding:6px;background:#050a07;border:1px solid var(--accent);box-shadow:0 0 30px -4px var(--accent),0 30px 80px -20px rgba(0,0,0,.8)}
/* museum – gilt frames under spotlights */
.skin-museum .stage{background:linear-gradient(180deg,#2b1f14,var(--bg) 40%,#2a1d11)}
.skin-museum .item-frame{padding:18px;background:#f4eee2;border:16px solid #b9893d;border-image:linear-gradient(135deg,#f6dc8a,#a67a2c 30%,#e9c86c 55%,#8f6521 80%,#f3d67f) 1;box-shadow:inset 0 0 0 3px #6e4a12,0 40px 90px -20px rgba(0,0,0,.75)}
.skin-museum .item::before{content:"";position:absolute;left:50%;bottom:100%;width:140%;height:40vh;transform:translateX(-50%);background:linear-gradient(180deg,transparent,rgba(255,236,190,.16));clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);pointer-events:none;opacity:0;transition:opacity .6s}
.skin-museum .item.active::before{opacity:1}
/* sea */
.skin-sea .stage{background:linear-gradient(180deg,#0f4c78 0,var(--bg) 40%,#02101d 100%)}
.skin-sea .stage::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 0%,rgba(143,211,244,.28),transparent 45%),radial-gradient(ellipse at 70% 10%,rgba(143,211,244,.18),transparent 40%);animation:caustic 9s ease-in-out infinite alternate;pointer-events:none}
.skin-sea .item-frame{padding:6px;background:rgba(230,243,250,.9)}
.skin-sea .item-frame img{filter:saturate(.9)}
.skin-sea .item{animation:drift 11s ease-in-out infinite}
/* mantel */
.skin-mantel .stage{background:linear-gradient(180deg,#3a2215,var(--bg) 60%,#1a0e08)}
.skin-mantel .shelf{position:absolute;left:0;right:0;bottom:22%;height:22px;background:linear-gradient(180deg,#6b4224,#3b2212);box-shadow:0 12px 30px rgba(0,0,0,.5)}
.skin-mantel .fire{position:absolute;left:50%;bottom:0;width:40vw;height:22%;transform:translateX(-50%);background:radial-gradient(ellipse at 50% 100%,rgba(255,150,60,.55),rgba(255,90,20,.25) 40%,transparent 70%);filter:blur(6px);animation:fire 1.6s ease-in-out infinite alternate}
.skin-mantel .item-frame{padding:14px;background:#efe3cf;border:12px solid #3a2415;box-shadow:inset 0 0 0 2px #8a5a32,0 30px 60px -16px rgba(0,0,0,.7)}
.skin-mantel .item-frame img{filter:sepia(.35) contrast(1.02)}
/* polaroid */
.skin-polaroid .stage{background:radial-gradient(ellipse at 50% 40%,#f4ecd9,var(--bg) 70%)}
.skin-polaroid .item-frame{padding:14px 14px 56px;background:#fff;border-radius:2px;box-shadow:0 20px 50px -14px rgba(60,40,20,.45)}
.skin-polaroid .item-frame img{filter:sepia(.25) contrast(1.02)}
.skin-polaroid .item-label{top:auto;bottom:16px;color:#3b2a1c;font-family:'Cormorant Garamond',serif;text-transform:none;letter-spacing:.04em;font-size:18px;opacity:.8}

@keyframes sway{0%,100%{rotate:-1.2deg}50%{rotate:1.2deg}}
@keyframes drift{0%,100%{translate:0 0}50%{translate:0 -14px}}
@keyframes flicker{0%,93%,100%{opacity:1}94%{opacity:.6}96%{opacity:.9}98%{opacity:.5}}
@keyframes blink{0%,60%{opacity:1}61%,100%{opacity:.35}}
@keyframes caustic{from{transform:translateX(-4%) scale(1.05)}to{transform:translateX(4%) scale(1.1)}}
@keyframes fire{from{opacity:.7;transform:translateX(-50%) scaleX(1)}to{opacity:1;transform:translateX(-50%) scaleX(1.12)}}
