/* Sabeti Lab · Holiday Cards ─ Lab App stylesheet */
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/CormorantGaramond-300.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/CormorantGaramond-400.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/CormorantGaramond-500.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/CormorantGaramond-300i.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400;font-display:swap;src:url(fonts/CormorantGaramond-400i.woff2) format('woff2')}
@font-face{font-family:Jost;font-style:normal;font-weight:300;font-display:swap;src:url(fonts/Jost-300.woff2) format('woff2')}
@font-face{font-family:Jost;font-style:normal;font-weight:400;font-display:swap;src:url(fonts/Jost-400.woff2) format('woff2')}
@font-face{font-family:Jost;font-style:normal;font-weight:500;font-display:swap;src:url(fonts/Jost-500.woff2) format('woff2')}
@font-face{font-family:Jost;font-style:italic;font-weight:300;font-display:swap;src:url(fonts/Jost-300i.woff2) format('woff2')}

:root{
  --paper:#f3eee4;--paper-2:#e7dfcf;--ink:#1d2320;--ink-2:#4b534d;--mute:#828a83;--line:rgba(29,35,32,.14);
  --gold:#b9a26f;--pine:#3f5c50;--wine:#7a4750;--night:#0f1513;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;--sans:Jost,'Helvetica Neue',Arial,sans-serif;
  --bar:56px;--vh:100vh;
  /* per-chapter theme (overridden inline on each .pin) */
  --bg:#101614;--bg2:#000;--fg:#f3eee4;--accent:#b9a26f;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--night);color:var(--paper);font-family:var(--sans);font-weight:300;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;border:0}
button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer}
a{color:inherit}
h1,h2,h3,p{margin:0;font-weight:inherit}
.skip{position:absolute;left:-999px;top:8px;z-index:1000;padding:8px 12px;background:var(--paper);color:var(--ink)}
.skip:focus{left:8px}

/* ───────── top bar ───────── */
.bar{position:fixed;top:0;left:0;right:0;height:var(--bar);z-index:60;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 clamp(16px,3vw,36px);
  color:var(--fg);pointer-events:none;transition:color .5s}
.bar>*{pointer-events:auto}
.bar-brand{font-family:var(--serif);font-weight:400;font-size:20px;letter-spacing:.04em;text-decoration:none}
.bar-title{font-size:11px;letter-spacing:.24em;text-transform:uppercase;opacity:.7;position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}
.bar-tools{display:flex;gap:8px}
.bar-btn{font-size:11px;letter-spacing:.2em;text-transform:uppercase;padding:7px 12px;border:1px solid currentColor;border-radius:999px;opacity:.75;transition:opacity .2s,background .2s}
.bar-btn:hover,.bar-btn[aria-pressed="true"]{opacity:1}
.bar-btn[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
@media (max-width:600px){.bar-title{display:none}}

/* ───────── scenes ───────── */
.story{position:relative}
.scene{position:relative;height:calc(var(--len,300) * var(--vh) / 100)}
.pin{position:sticky;top:0;height:var(--vh);min-height:100vh;overflow:hidden;isolation:isolate;background:var(--bg);color:var(--fg)}
.stage,.abs{position:absolute;inset:0}
.fx{position:absolute;inset:0;pointer-events:none;z-index:2}
.pin.light{--fg:var(--ink)}
.pin.parked .stage,.pin.parked .fx,.pin.parked .cap{display:none}

/* info panel: side column on wide screens, top band on narrow ones – never over the pictures */
.info{position:absolute;z-index:8;left:clamp(20px,4vw,64px);top:50%;transform:translateY(-50%);width:min(30vw,380px);will-change:opacity,transform;opacity:0}
.i-kicker{font-size:11px;letter-spacing:.24em;text-transform:uppercase;opacity:.7;margin-bottom:6px}
.i-year{font-family:var(--serif);font-weight:300;font-size:clamp(64px,8.5vw,136px);line-height:.88;letter-spacing:-.02em}
.i-title{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(22px,2.4vw,38px);line-height:1.1;margin-top:10px}
.i-tag{font-size:11px;letter-spacing:.2em;text-transform:uppercase;margin-top:10px;color:var(--accent)}
.i-line{font-size:clamp(14px,1.1vw,16px);line-height:1.55;margin-top:12px;opacity:.85;max-width:38ch}
.i-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:16px;font-size:11.5px;letter-spacing:.06em;opacity:.75}
.i-meta a{text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px}
.i-meta a:hover{opacity:1;border-bottom-width:2px}
.i-now{margin-top:18px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;display:flex;align-items:center;gap:10px;min-height:20px}
.i-now::before{content:"";width:28px;height:1px;background:var(--accent);flex:0 0 auto}
.i-now a{text-decoration:none;opacity:.6;letter-spacing:.06em;text-transform:none}
.i-now a:hover{opacity:1}
body.narrow .info{left:16px;right:16px;top:calc(var(--bar) - 2px);transform:none;width:auto;text-align:center;display:grid;grid-template-columns:auto 1fr;gap:0 14px;align-items:center;text-align:left}
body.narrow .i-kicker,body.narrow .i-line,body.narrow .i-meta{display:none}
body.narrow .i-year{font-size:clamp(44px,13vw,64px);grid-row:1/4}
body.narrow .i-title{font-size:clamp(17px,4.6vw,24px);margin-top:0}
body.narrow .i-tag{margin-top:2px;font-size:10px}
body.narrow .i-now{margin-top:4px;font-size:10.5px}
body.narrow .i-now::before{width:16px}

/* intro captions */
.cap{position:absolute;z-index:7;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-family:var(--serif);font-style:italic;font-weight:300;font-size:clamp(34px,6vw,92px);line-height:1;letter-spacing:-.01em;white-space:nowrap;pointer-events:none;opacity:0;will-change:transform,opacity;text-shadow:0 2px 30px rgba(0,0,0,.35)}
.cap.top{top:calc(var(--bar) + 4vh);transform:translateX(-50%)}
.cap small,.i-line small{font-size:.82em;text-transform:none}
.pin.light .cap{text-shadow:0 2px 30px rgba(255,255,255,.4)}

/* gallery: a clipped box that never overlaps the info panel */
.walk{position:absolute;left:0;top:0;overflow:hidden;z-index:3}
.item{position:absolute;left:50%;top:50%;will-change:transform,opacity;transform-origin:50% 50%;opacity:0}
.item-frame{position:relative;box-sizing:content-box;background:#fff;box-shadow:0 30px 80px -20px rgba(0,0,0,.55);border-radius:3px}
.item-frame img{width:100%;height:100%;object-fit:contain;border-radius:inherit;background-size:cover;background-position:center}
.item-frame .ph{position:absolute;inset:0;background-size:cover;background-position:center;filter:blur(12px);transform:scale(1.04);border-radius:inherit;transition:opacity .5s}
.item.loaded .ph{opacity:0}
.item-label{position:absolute;left:50%;top:calc(100% + 12px);transform:translateX(-50%);font-size:11px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .3s}
.item.active .item-label{opacity:.8}
.item.video .item-frame{background:#000;aspect-ratio:16/9;overflow:hidden}
.item.video .poster{width:100%;height:100%;object-fit:cover;opacity:.85}
.item.video .play{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.item.video .play i{width:64px;height:64px;border-radius:50%;border:1px solid rgba(255,255,255,.75);display:grid;place-items:center;background:rgba(0,0,0,.35);backdrop-filter:blur(6px)}
.item.video .play i::after{content:"";border-style:solid;border-width:9px 0 9px 16px;border-color:transparent transparent transparent #fff;margin-left:4px}
.item.video .play b{position:absolute;bottom:14px;left:0;right:0;text-align:center;font-weight:400;font-size:11px;letter-spacing:.22em;text-transform:uppercase}
.item.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.item.video .shield{position:absolute;left:50%;top:12px;transform:translateX(-50%);cursor:pointer;z-index:3}
.item.video .shield span{display:block;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;padding:6px 12px;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;white-space:nowrap;border:1px solid rgba(255,255,255,.25)}
.item.video .shield:hover span{background:rgba(0,0,0,.85)}

/* ───────── hero / deck ───────── */
.hero{--bg:var(--night)}
.hero .stage{background:radial-gradient(ellipse at 50% 40%,#1b2622 0%,var(--night) 60%)}
.deck{position:absolute;inset:0;perspective:1600px}
.card{position:absolute;left:0;top:0;will-change:transform,opacity;cursor:pointer;text-align:left}
.card-in{position:relative;display:block;width:100%;height:100%;background:#fff;padding:4px;border-radius:3px;box-shadow:0 24px 60px -18px rgba(0,0,0,.7);transition:box-shadow .3s}
.card-back{position:absolute;inset:0;display:none;border-radius:3px;background:#0f1d33;overflow:hidden;box-shadow:0 24px 60px -18px rgba(0,0,0,.7)}
.card.back .card-in{visibility:hidden}
.card.back .card-back{display:block}
.card-back::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.95) .9px,transparent 1.5px),radial-gradient(rgba(255,255,255,.55) .8px,transparent 1.4px),radial-gradient(rgba(230,213,173,.75) 1.2px,transparent 1.9px);background-size:233px 197px,149px 131px,367px 311px;background-position:13px 27px,71px 53px,190px 40px}
.hero-cue{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:9;opacity:0;pointer-events:none;display:flex;align-items:center;gap:10px;padding:9px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:rgba(10,14,12,.45);font-size:11px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;will-change:opacity,transform}
.hero-cue i{width:8px;height:8px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg) translateY(-2px);animation:cue-bob 1.4s ease-in-out infinite}
@keyframes cue-bob{0%,100%{transform:rotate(45deg) translate(0,-2px)}50%{transform:rotate(45deg) translate(3px,1px)}}
body.narrow .hero-cue{bottom:calc(14px + env(safe-area-inset-bottom));font-size:10px;padding:8px 13px}
.card-in img{width:100%;height:100%;object-fit:cover;border-radius:2px;background:#222}
.card b{position:absolute;left:0;right:0;top:calc(100% + 8px);text-align:center;font-family:var(--serif);font-weight:300;font-size:clamp(13px,1.3vw,20px);letter-spacing:.06em;opacity:0;transition:opacity .25s}
.deck.spread .card:hover .card-in,.card:focus-visible .card-in{box-shadow:0 0 0 1px var(--gold),0 30px 70px -18px rgba(0,0,0,.8)}
.card:focus-visible{outline:none}
.hero-copy{position:absolute;z-index:45;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;width:min(92vw,900px);pointer-events:none}
.hero-kicker{font-size:11px;letter-spacing:.26em;text-transform:uppercase;opacity:.7}
.hero-title{font-family:var(--serif);font-weight:300;font-style:italic;font-size:clamp(56px,11vw,168px);line-height:.95;letter-spacing:-.01em;margin-top:14px;white-space:nowrap}
.hero-title span{display:inline-block;will-change:transform,opacity,filter}
.hero-sub{font-family:var(--serif);font-weight:300;font-size:clamp(20px,2.6vw,34px);opacity:.8;margin-top:6px}
.hero-text{font-size:clamp(14px,1.15vw,17px);max-width:46ch;margin:22px auto 0;opacity:.75}
.hero-press{margin-top:26px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;opacity:.7;display:flex;gap:12px;justify-content:center;align-items:center;flex-wrap:wrap}
.hero-press span{opacity:.6}
.hero-press i{font-style:normal;opacity:.5}
.hero-press a{pointer-events:auto;text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:2px}
.hero-press a:hover{color:#fff}
.hero .pin::after{content:"";position:absolute;inset:0;background:var(--tint,transparent);opacity:var(--tint-a,0);pointer-events:none;z-index:5}
.hero-sky{z-index:6;opacity:0;pointer-events:none}
.hero-sky-solid{position:absolute;inset:0;will-change:opacity}
.hero-hint{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:9;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;opacity:.6;display:flex;flex-direction:column;align-items:center;gap:8px}
.hero-hint i{width:1px;height:40px;background:linear-gradient(var(--paper),transparent);animation:drop 1.8s ease-in-out infinite}
@keyframes drop{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ───────── year rail ───────── */
.rail{position:fixed;z-index:55;right:14px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;padding:8px 6px;border-radius:14px;background:rgba(10,14,12,.32);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transition:opacity .4s;pointer-events:none}
.rail.show{opacity:1;pointer-events:auto}
.rail button{font-size:10.5px;letter-spacing:.08em;color:rgba(255,255,255,.55);padding:3px 8px;border-radius:8px;text-align:right;position:relative;transition:color .2s,font-size .2s}
.rail button:hover{color:#fff}
.rail button.on{color:#fff;font-family:var(--serif);font-size:15px;font-weight:400}
.rail button.on::before{content:"";position:absolute;right:100%;top:50%;width:14px;height:1px;background:var(--gold);margin-right:2px}
body.on-light .rail{background:rgba(255,255,255,.55)}
body.on-light .rail button{color:rgba(29,35,32,.55)}
body.on-light .rail button:hover,body.on-light .rail button.on{color:#1d2320}
body.narrow .rail{right:0;left:0;top:auto;bottom:0;transform:none;flex-direction:row;gap:0;padding:6px 10px calc(6px + env(safe-area-inset-bottom));border-radius:0;overflow-x:auto;scrollbar-width:none;background:linear-gradient(transparent,rgba(10,14,12,.65));backdrop-filter:none;-webkit-backdrop-filter:none}
body.narrow.on-light .rail{background:linear-gradient(transparent,rgba(255,255,255,.75))}
body.narrow .rail::-webkit-scrollbar{display:none}
body.narrow .rail button{flex:0 0 auto;padding:4px 7px}
body.narrow .rail button.on::before{display:none}
/* phones: no backdrop blur (expensive to composite on iOS), solid tints instead */
body.narrow .rail,body.narrow .corner a,body.narrow .corner button,body.narrow .item.video .play i,body.narrow .skin-space .item-frame{backdrop-filter:none;-webkit-backdrop-filter:none}
body.narrow .corner a,body.narrow .corner button{background:rgba(10,14,12,.62)}
body.narrow.on-light .corner a,body.narrow.on-light .corner button{background:rgba(255,255,255,.85)}
body.narrow .skin-space .item-frame{background:rgba(20,28,48,.85)}

/* ───────── corner buttons ───────── */
.corner{position:fixed;z-index:56;right:14px;bottom:16px;display:flex;flex-direction:column;gap:8px;opacity:0;transition:opacity .4s;pointer-events:none}
.corner.show{opacity:1;pointer-events:auto}
.corner a,.corner button{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:rgba(10,14,12,.38);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;border:1px solid rgba(255,255,255,.18);transition:background .2s,transform .2s;text-decoration:none}
.corner a:hover,.corner button:hover{background:rgba(10,14,12,.7);transform:translateY(-2px)}
.corner svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
body.on-light .corner a,body.on-light .corner button{background:rgba(255,255,255,.6);color:#1d2320;border-color:rgba(29,35,32,.15)}
body.on-light .corner a:hover,body.on-light .corner button:hover{background:rgba(255,255,255,.95)}
body.narrow .corner{right:10px;bottom:calc(46px + env(safe-area-inset-bottom));flex-direction:row}
body.narrow .corner a,body.narrow .corner button{width:36px;height:36px}

/* ───────── end ───────── */
.end{position:relative;background:var(--paper);color:var(--ink);padding:clamp(70px,10vh,120px) 20px clamp(90px,12vh,140px);text-align:center}
.end h2{font-family:var(--serif);font-weight:300;font-style:italic;font-size:clamp(40px,6vw,84px);line-height:1}
.end p{max-width:52ch;margin:18px auto 0;font-size:clamp(15px,1.2vw,18px);color:var(--ink-2)}
.end-press{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:center;align-items:center;margin:34px auto 0;font-size:13px;color:var(--mute)}
.end-press strong{font-weight:400;letter-spacing:.2em;text-transform:uppercase;font-size:10.5px}
.end-press a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:1px}
.end-years{display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:center;margin:40px auto 0;max-width:820px;font-family:var(--serif);font-size:20px}
.end-years button{color:var(--ink-2);padding:2px 4px}
.end-years button:hover{color:var(--ink);border-bottom:1px solid var(--gold)}
.end-links{margin-top:44px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;display:flex;gap:26px;justify-content:center;flex-wrap:wrap}
.end-links a{color:var(--ink-2);text-decoration:none}
.end-links a:hover{color:var(--ink)}

/* ───────── global snow ───────── */
.snow{position:fixed;inset:0;z-index:50;pointer-events:none;display:none}
.snow.on{display:block}

/* ═══════════ INTRO TREATMENTS ═══════════ */
/* pop: full card as background, cut-out layer floating in front */
.pop{position:absolute;left:0;top:0;will-change:transform,opacity}
.pop-bg,.pop-fg{position:absolute;left:0;top:0;will-change:transform,opacity}
.pop-bg{width:100%;height:100%;object-fit:cover;border-radius:4px;box-shadow:0 40px 100px -20px rgba(0,0,0,.6)}
.pop-fg{filter:drop-shadow(0 30px 40px rgba(0,0,0,.45))}
.pop-fg img{width:100%;height:100%}

/* float (2018) */
.stars{position:absolute;inset:-10%;background-image:radial-gradient(rgba(255,255,255,.9) 1px,transparent 1.6px),radial-gradient(rgba(255,255,255,.5) 1px,transparent 1.6px),radial-gradient(rgba(180,200,255,.6) 1.4px,transparent 2px),radial-gradient(rgba(255,255,255,.7) .8px,transparent 1.4px);background-size:227px 193px,151px 137px,347px 311px,113px 97px;background-position:10px 20px,80px 60px,40px 120px,23px 71px;will-change:transform}
.planet{position:absolute;left:50%;top:100%;width:260vmax;height:260vmax;border-radius:50%;transform:translate(-50%,-3%);background:radial-gradient(circle at 50% 0%,#2f6ea8 0%,#0f2e58 10%,#050a18 22%,transparent 26%);box-shadow:0 -40px 160px 30px rgba(232,181,90,.3),0 -10px 60px 10px rgba(120,190,255,.45);will-change:transform}
.floater{position:absolute;left:50%;top:50%;will-change:transform,opacity;filter:drop-shadow(0 20px 30px rgba(0,0,0,.6))}
.floater img{width:100%;height:auto}
.space-title{position:absolute;left:50%;top:calc(var(--bar) + 6vh);transform:translateX(-50%);width:min(900px,92vw);text-align:center;z-index:6;color:var(--accent);font-family:var(--sans);font-weight:500;font-size:clamp(20px,3.6vw,48px);letter-spacing:.14em;line-height:1.1;text-transform:uppercase;pointer-events:none}
.space-title span{display:inline-block;will-change:transform,opacity;opacity:0}

/* crawl (2015) */
.crawl-persp{position:absolute;inset:0;perspective:420px;perspective-origin:50% 100%;z-index:3;pointer-events:none;overflow:hidden}
.crawl-plane{position:absolute;left:0;bottom:0;width:min(820px,90vw);height:100%;transform-origin:50% 100%;transform:rotateX(27deg);overflow:hidden;-webkit-mask-image:linear-gradient(transparent 0,#000 30%,#000 100%);mask-image:linear-gradient(transparent 0,#000 30%,#000 100%)}
.sw-logo{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);z-index:5;text-align:center;font-family:var(--sans);font-weight:500;color:transparent;-webkit-text-stroke:2px var(--accent);text-transform:uppercase;letter-spacing:.02em;line-height:.88;font-size:120px;opacity:0;will-change:transform,opacity;pointer-events:none;white-space:nowrap}
.sw-logo span{display:block}
.sw-logo span.sm{font-size:.3em;letter-spacing:.4em;line-height:1.3;-webkit-text-stroke:1px var(--accent)}
.crawl{position:absolute;left:0;right:0;bottom:0;color:var(--accent);font-weight:400;text-align:justify;font-size:clamp(22px,3.2vw,44px);line-height:1.35;will-change:transform}
.crawl h3{text-align:center;font-size:1.05em;letter-spacing:.08em;margin-bottom:.4em;text-transform:uppercase;font-weight:500}
.crawl h3 small{display:block;font-size:.5em;letter-spacing:.3em;margin-bottom:.4em;font-weight:400}
.crawl p{margin-bottom:.9em}
.crawl-fade{position:absolute;left:0;right:0;top:0;height:30%;background:linear-gradient(#000 10%,transparent);z-index:4;pointer-events:none}
.stars{will-change:transform,opacity,filter;transform-origin:50% 50%}
.jedi{position:absolute;bottom:0;will-change:transform,opacity;filter:drop-shadow(0 20px 40px rgba(0,0,0,.8))}
.jedi img{height:min(60vh,760px);width:auto}
.jedi.l{left:-4vw}.jedi.r{right:-2vw}
body.narrow .jedi img{height:min(34vh,420px)}
.longago{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);color:#4bd5ee;font-family:var(--serif);font-size:clamp(20px,2.6vw,34px);will-change:opacity;text-align:center;width:90vw}

/* beam (2014) */
.city{position:absolute;left:0;right:0;bottom:0;height:80vh;will-change:transform;display:flex;align-items:flex-end;gap:2%;padding:0 2%}
.city i{display:block;flex:1;min-height:40%;background:currentColor;border-radius:2px 2px 0 0;position:relative;opacity:.9}
.city i::after{content:"";position:absolute;inset:6% 18%;background:repeating-linear-gradient(180deg,rgba(255,255,255,.35) 0 6px,transparent 6px 16px)}
.city.far{color:#aeb6c2;height:62vh;filter:blur(1px)}.city.mid{color:#7f8998;height:70vh}.city.near{color:#4a5262;height:80vh}
.haze{position:absolute;left:0;right:0;bottom:0;height:60vh;background:linear-gradient(180deg,transparent,rgba(255,255,255,.7));pointer-events:none}
.beam{position:absolute;left:50%;bottom:0;width:min(92vw,1300px);transform:translateX(-50%);will-change:transform}
.beam img{width:100%;height:auto;filter:grayscale(1) contrast(1.05) drop-shadow(0 40px 40px rgba(0,0,0,.35));position:relative;z-index:1}
.girder-bar{position:absolute;left:-30vw;right:-30vw;top:53%;height:7%;background:linear-gradient(180deg,#5b626e 0,#3b414b 18%,#262a31 20%,#30353d 80%,#1b1e24 82%,#4a505a 100%);box-shadow:0 30px 60px rgba(0,0,0,.35)}
.girder-bar::after{content:"";position:absolute;left:0;right:0;top:32%;height:36%;background:repeating-linear-gradient(90deg,transparent 0 46px,rgba(255,255,255,.18) 46px 52px,transparent 52px 60px)}

/* crowd (2012) */
.stripes{position:absolute;inset:-20%;background:repeating-linear-gradient(115deg,transparent 0 120px,rgba(165,232,109,.12) 120px 160px,transparent 160px 300px,rgba(0,229,255,.1) 300px 330px,transparent 330px 520px,rgba(255,255,255,.06) 520px 570px);will-change:transform}
.stripes.b{background:repeating-linear-gradient(65deg,transparent 0 220px,rgba(255,255,255,.05) 220px 260px)}
.crowd{position:absolute;left:50%;bottom:0;width:min(96vw,1500px);transform:translateX(-50%);will-change:transform}
.crowd img{width:100%;height:auto;filter:drop-shadow(0 30px 40px rgba(0,0,0,.6))}
.op{position:absolute;font-family:var(--sans);font-weight:500;font-size:clamp(48px,10vw,160px);letter-spacing:.02em;color:#fff;text-shadow:4px 4px 0 var(--accent);opacity:0;will-change:transform,opacity;line-height:1;z-index:4;transform:translate(-50%,-50%);white-space:nowrap}

/* zoom */
.zfront,.zinside{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);will-change:transform,opacity;max-width:none}
.zinside{opacity:0;border-radius:4px;box-shadow:0 40px 90px rgba(0,0,0,.5)}

/* open (3-D card) */
.book{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);perspective:2200px;will-change:transform}
.book .page{position:absolute;inset:0;border-radius:4px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.35);background:#fff center/cover no-repeat}
.book .cover{position:absolute;inset:0;transform-origin:0% 50%;transform-style:preserve-3d;will-change:transform}
.book .face{position:absolute;inset:0;border-radius:4px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#fff center/cover no-repeat;box-shadow:0 30px 70px rgba(0,0,0,.35)}
.book .face.back{transform:rotateY(180deg)}

/* portrait (2008) */
.portrait{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);will-change:transform,filter,opacity;filter:sepia(.9) contrast(.95)}
.portrait img{height:100%;width:auto}
.mark{position:absolute;right:clamp(10px,4vw,60px);bottom:-.08em;font-family:var(--serif);font-weight:300;font-size:clamp(120px,26vw,420px);line-height:1;letter-spacing:-.04em;opacity:.07;pointer-events:none;user-select:none;z-index:0;will-change:transform}

/* ═══════════ 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)}}

/* ═══════════ SIMPLE MODE (reduced motion / fallback) ═══════════ */
body.simple .scene{height:auto}
body.simple .pin{position:relative;height:auto;min-height:0;padding:80px 20px 60px}
body.simple .stage,body.simple .fx,body.simple .cap,body.simple .hero-hint{display:none}
body.simple .info{position:static;transform:none;opacity:1;width:auto;max-width:720px;margin:0 auto 30px;display:block}
body.simple .i-now{display:none}
body.simple .flat{display:grid;gap:26px;max-width:960px;margin:0 auto}
body.simple .flat .item{position:static;transform:none!important;opacity:1!important}
body.simple .flat .item-frame{max-width:100%;width:auto;height:auto}
body.simple .flat .item-frame img{height:auto}
body.simple .flat .item-label{position:static;transform:none;opacity:.8;margin-top:8px;text-align:center}
body.simple .hero .pin{min-height:70vh;display:grid;place-items:center}
body.simple .hero-copy{position:static;transform:none}
body.simple .deck{display:none}
body.simple .rail{display:none}
@media (prefers-reduced-motion:reduce){.hero-hint i,.item,.skin-sea .stage::before,.skin-mantel .fire{animation:none!important}}

/* ═══════════ EDITOR (only loaded for logged-in editors) ═══════════ */
.editor{position:fixed;top:0;right:0;bottom:0;z-index:80;width:min(460px,100%);background:var(--paper);color:var(--ink);box-shadow:-20px 0 60px rgba(0,0,0,.3);overflow:auto;font-size:13px;line-height:1.45}
.editor[hidden]{display:none}
.ed-head{position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--line);padding:18px 22px 14px;z-index:1}
.ed-head h2{font-family:var(--serif);font-weight:400;font-size:26px;line-height:1;margin-bottom:6px}
.ed-head p{color:var(--ink-2);font-size:12.5px;max-width:52ch}
.ed-x{position:absolute;right:14px;top:12px;width:34px;height:34px;border-radius:50%;font-size:22px;line-height:1;color:var(--ink-2)}
.ed-x:hover{background:var(--paper-2)}
.ed-body{padding:16px 22px 40px}
.ed-years{list-style:none;padding:0;margin:14px 0 0}
.ed-years li+li{border-top:1px solid var(--line)}
.ed-years button{width:100%;text-align:left;padding:9px 4px;display:flex;flex-wrap:wrap;gap:0 10px;align-items:baseline}
.ed-years button:hover{background:var(--paper-2)}
.ed-years b{font-family:var(--serif);font-size:20px;font-weight:400}
.ed-years small{flex-basis:100%;color:var(--mute);font-size:11px;letter-spacing:.04em}
.ed-f{display:block;margin:10px 0}
.ed-f>span{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin-bottom:4px}
.ed-f>span code{text-transform:none;letter-spacing:0;font-size:11px}
.ed-f input,.ed-f select,.ed-f textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:6px;padding:7px 9px}
.ed-f textarea{resize:vertical;font-family:ui-monospace,Menlo,monospace;font-size:12px}
.ed-f input:focus,.ed-f select:focus,.ed-f textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.ed-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:0 12px}
.ed-cw{display:flex;gap:6px;align-items:center}
.ed-cw input[type=color]{width:38px;flex:0 0 38px;padding:0;height:34px;border-radius:6px;border:1px solid var(--line);background:none}
.ed-theme{border:1px solid var(--line);border-radius:8px;padding:6px 12px 10px;margin:14px 0}
.ed-theme legend{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding:0 6px}
.ed-check-l{display:flex;gap:8px;align-items:center;font-size:12.5px}
.ed-btn{font:inherit;font-size:12px;letter-spacing:.12em;text-transform:uppercase;padding:9px 14px;border-radius:999px;border:1px solid var(--ink);color:var(--ink);background:none;margin:8px 8px 0 0}
.ed-btn:hover{background:var(--paper-2)}
.ed-btn.primary{background:var(--ink);color:var(--paper)}
.ed-btn.primary:hover{background:#000}
.ed-btn.danger{border-color:var(--wine);color:var(--wine)}
.ed-actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.ed-msg{margin-top:12px;min-height:18px}
.ed-check{margin:8px 0 4px}
.ed-ck{font-size:12px;padding:3px 0;color:var(--ink-2)}
.ed-ck code{font-size:11px}
.ed-ck .ok{color:var(--pine);font-weight:400}
.bad{color:var(--wine);font-weight:400}
.ed-more{margin-top:22px;border-top:1px solid var(--line);padding-top:8px}
.ed-more summary{cursor:pointer;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding:6px 0}
.ed-tools{margin-top:10px}
.ed-hint{color:var(--mute);font-size:12px;margin-top:10px}
.ed-hint code{font-size:11px}

/* bunch (2020) */
.bunch{position:absolute;left:0;top:0;will-change:transform,opacity}
.bgrid{position:absolute;inset:0}
.btile{position:absolute;background-repeat:no-repeat;border-radius:4px;box-shadow:0 18px 40px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.12);will-change:transform,opacity;opacity:0}

/* pieces + tiles intros */
.piece{position:absolute;will-change:transform,opacity;pointer-events:none}
.piece img{width:100%;height:100%;object-fit:contain}
.tgrid{position:absolute;inset:0;will-change:opacity}
.tile{position:absolute;background-repeat:no-repeat;border-radius:3px;box-shadow:0 12px 30px rgba(0,0,0,.45);will-change:transform,opacity;outline:1px solid rgba(255,255,255,.06)}
