/* V39: The Vault, Announcements, reviews and the creator dashboard. Uses the existing colour tokens from style.css. */
.vsr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.vtools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:22px 0 6px}
.vsearch{position:relative;flex:1 1 280px;max-width:460px}
.vsearch input{width:100%;box-sizing:border-box;background:var(--s2);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:12px 42px 12px 14px;font:400 1rem "Work Sans",sans-serif}
.vsearch input:focus{outline:2px solid var(--amber);outline-offset:1px}
.vsearch button{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);font-size:1.3rem;line-height:1;padding:8px 10px;cursor:pointer}
.vsearch button:hover{color:var(--ink)}
.vcount{color:var(--muted);font-size:.95rem;min-height:1.4em}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:26px;margin-top:26px;padding:0;list-style:none}
.vtile{display:block;position:relative;width:100%;box-sizing:border-box;text-align:left;font:inherit;color:var(--ink);background:var(--s1);border:1px solid var(--line);padding:14px 14px 18px;text-decoration:none;cursor:pointer;transition:border-color .2s,transform .2s}
.vtile .cv{display:block;aspect-ratio:696/1080;background:var(--s2);overflow:hidden;position:relative}
.vtile img{width:100%;height:100%;object-fit:cover;display:block}
.vtile h2,.vtile h3{font:400 1.5rem Anton,Impact,sans-serif;letter-spacing:.05em;text-transform:uppercase;margin:14px 0 4px}
.vtile h2::after{display:none}
.vtile .st{color:var(--amber);font-size:.9rem;letter-spacing:.06em;text-transform:uppercase}
.vtile.locked{color:var(--muted)}
.vtile.locked .cv{display:grid;place-items:center;background:repeating-linear-gradient(135deg,#0d131a 0 10px,#111a23 10px 20px)}
.vtile.locked svg{width:64px;height:64px;color:#5c6b7a}
.vtile:hover,.vtile:focus-visible{border-color:var(--amber)}
.vtile:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.vtile.shake{animation:vshake .42s}
@keyframes vshake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
.vlockmsg{min-height:1.6em;color:var(--amber2);margin:16px 0 0}
.vempty{border-left:3px solid var(--line);background:var(--s1);padding:18px 20px;color:var(--muted);max-width:620px;margin:26px 0}
.vempty button{margin-left:6px}
body.vzoom main{transition:transform .42s ease,opacity .42s ease;transform:scale(1.08);opacity:0}
.vin main{animation:vin .5s ease both}
@keyframes vin{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){body.vzoom main{transform:none;transition:none}.vin main,.vtile.shake{animation:none}.vtile{transition:none}}
/* series page */
.vtabs{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 0;padding:0;list-style:none}
.vtabs button{background:var(--s1);color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:11px 16px;font:600 1rem "Work Sans",sans-serif;cursor:pointer}
.vtabs button[aria-current=true]{background:var(--amber);color:#14100b;border-color:var(--amber)}
.vtabs button:not([aria-current=true]):hover{color:var(--ink);border-color:var(--teal)}
.vtabs button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
.vtabs .n{margin-left:6px;font-size:.8rem;opacity:.85}
.vpanel{margin-top:28px}
.vpanel>h2{margin-bottom:20px}
.vrate{display:flex;align-items:center;gap:10px;color:var(--muted);margin-top:6px}
.stars{color:var(--amber);letter-spacing:.12em;font-size:1.05rem}
.vissues{display:grid;gap:26px;padding:0;list-style:none}
.vissue{display:grid;grid-template-columns:150px 1fr;gap:22px;background:var(--s1);border:1px solid var(--line);padding:20px}
.vissue img{width:100%;height:auto;display:block;background:var(--s2)}
.vissue h3{font:400 1.5rem Anton,Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px}
.vmeta{color:var(--muted);font-size:.95rem;display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:10px}
.vactions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.vcovers{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:18px;padding:0;list-style:none;align-items:start}
.vcover{background:var(--s1);border:1px solid var(--line);padding:10px;margin:0}
.vcover button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;color:inherit;font:inherit;text-align:left}
.vcover img{width:100%;height:auto;display:block;background:var(--s2)}
.vcover b{display:block;font-weight:600;margin-top:10px}
.vcover .k{color:var(--amber);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}
.vchars{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px;padding:0;list-style:none}
.vchar{background:var(--s1);border:1px solid var(--line);padding:18px}
.vchar img{width:100%;max-height:340px;object-fit:cover;display:block;margin-bottom:14px;background:var(--s2)}
.vchar h3{font:400 1.4rem Anton,Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase;margin:0 0 8px}
.vchar h4{margin:14px 0 4px;color:var(--amber);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}
.vchar p{white-space:pre-wrap;margin:0}
.vprevs{display:grid;gap:16px;padding:0;list-style:none}
.vprev{background:var(--s1);border:1px solid var(--line);padding:18px;display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between}
.vprev h3{font:400 1.3rem Anton,Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px}
.vprev p{margin:0;color:var(--muted);max-width:60ch;white-space:pre-wrap}
dialog.vdlg{background:#05080c;color:var(--ink);border:1px solid var(--line);padding:0;max-width:min(96vw,980px);width:100%;max-height:96vh}
dialog.vdlg::backdrop{background:rgba(2,4,8,.86)}
.vdlg .bd{padding:14px;display:grid;gap:10px;justify-items:center}
.vdlg img{max-width:100%;max-height:calc(96vh - 150px);width:auto;height:auto;display:block;object-fit:contain}
.vdlg .cap{color:var(--muted);text-align:center;margin:0}
.vdlg .ctl{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.vdlg .ctl button{background:var(--s2);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:10px 16px;font:600 1rem "Work Sans",sans-serif;cursor:pointer;min-width:44px;min-height:44px}
.vdlg .ctl button:hover{border-color:var(--amber)}
.vdlg .ctl button:disabled{opacity:.4;cursor:default}
/* reviews */
.vrev{margin-top:34px;border-top:1px solid var(--line);padding-top:22px}
.vrev h3{margin:0 0 6px}
.vrevlist{padding:0;list-style:none;display:grid;gap:14px;margin:18px 0}
.vrevitem{background:var(--s1);border:1px solid var(--line);padding:14px 16px}
.vrevitem .h{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;color:var(--muted);font-size:.92rem;margin-bottom:6px}
.vrevitem p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.vspoil{background:var(--s2);border:1px dashed var(--line);color:var(--ink);padding:10px 14px;cursor:pointer;font:inherit}
.vform{display:grid;gap:12px;max-width:620px;margin-top:12px}
.vform label,.vform legend{font-weight:600}
.vform textarea,.vform input[type=text],.vform input[type=url],.vform input[type=number],.vform input[type=date],.vform select{width:100%;box-sizing:border-box;background:var(--s2);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:11px 12px;font:400 1rem "Work Sans",sans-serif}
.vform textarea{min-height:110px;resize:vertical}
.vform textarea:focus,.vform input:focus,.vform select:focus{outline:2px solid var(--amber);outline-offset:1px}
.vform fieldset{border:0;padding:0;margin:0}
.starpick{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}
.starpick input{position:absolute;opacity:0;width:1px;height:1px}
.starpick label{font-size:2rem;line-height:1;color:#4b5866;cursor:pointer;padding:2px 4px;font-weight:400}
.starpick input:checked~label,.starpick label:hover,.starpick label:hover~label{color:var(--amber)}
.starpick input:focus-visible+label{outline:2px solid var(--amber);outline-offset:2px}
.vstatus{color:var(--amber2);margin:4px 0}.vstatus.bad{color:#ff9a8a}.vstatus.good{color:#8fd6c9}
.vchip{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:.82rem;color:var(--muted)}
.vchip.pending{color:var(--amber2);border-color:var(--amber)}.vchip.approved{color:#8fd6c9;border-color:var(--teal)}.vchip.rejected{color:#ff9a8a;border-color:#8a4a44}
/* announcements */
.vcats{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 4px;padding:0;list-style:none}
.vcats button{background:var(--s1);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:9px 16px;font:600 .95rem "Work Sans",sans-serif;cursor:pointer}
.vcats button[aria-pressed=true]{background:var(--amber);color:#14100b;border-color:var(--amber)}
.vann{display:grid;gap:22px;padding:0;list-style:none;margin:22px 0}
.vannitem{background:var(--s1);border:1px solid var(--line);padding:20px 22px;max-width:760px}
.vannitem .h{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;color:var(--muted);font-size:.92rem;margin-bottom:10px}
.vannitem .cat{color:var(--amber);font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.vannitem p{margin:0 0 12px;white-space:pre-wrap;overflow-wrap:anywhere}
.vannitem img{max-width:100%;height:auto;display:block;margin:10px 0;border:1px solid var(--line)}
.vannitem .links{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
/* dashboard */
.dtabs{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0;padding:0;list-style:none}
.dtabs button{background:var(--s1);color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:10px 14px;font:600 .95rem "Work Sans",sans-serif;cursor:pointer}
.dtabs button[aria-current=true]{background:var(--amber);color:#14100b;border-color:var(--amber)}
.dlist{width:100%;border-collapse:collapse;margin:14px 0}
.dlist th,.dlist td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.dlist th{color:var(--muted);font-size:.85rem;letter-spacing:.06em;text-transform:uppercase}
.dlist td .btn{margin:2px 4px 2px 0}
.dwrap{overflow-x:auto}
.dpanel{background:var(--s1);border:1px solid var(--line);padding:22px;margin:18px 0}
.dpanel h3{margin:0 0 12px}
.dhelp{color:var(--muted);font-size:.9rem;margin:2px 0 0}
.dform{display:grid;gap:14px;max-width:720px}
.dform .row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dform label{font-weight:600;display:block;margin-bottom:4px}
.dform input[type=text],.dform input[type=url],.dform input[type=number],.dform input[type=date],.dform select,.dform textarea{width:100%;box-sizing:border-box;background:var(--s2);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:11px 12px;font:400 1rem "Work Sans",sans-serif}
.dform textarea{min-height:120px;resize:vertical}
.dform .chk{display:flex;gap:10px;align-items:center;font-weight:400}
.dform .chk input{width:20px;height:20px}
.dthumb{max-width:120px;max-height:120px;display:block;margin-top:8px;border:1px solid var(--line)}
.dbtn{background:transparent;color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:8px 14px;font:600 .95rem "Work Sans",sans-serif;cursor:pointer}
.dbtn:hover{border-color:var(--amber)}.dbtn.danger{color:#ff9a8a;border-color:#8a4a44}.dbtn.danger:hover{background:rgba(138,74,68,.2)}
@media (max-width:640px){.vissue{grid-template-columns:1fr}.vissue img{max-width:200px}.dform .row2{grid-template-columns:1fr}.dlist.stack thead{display:none}.dlist.stack tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}.dlist.stack td{display:block;border:0;padding:4px 12px}}

/* V41: Cover Gallery grouped by issue */
.vgroups{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:22px;padding:0;list-style:none;margin:0}
.vgroup{display:block;width:100%;box-sizing:border-box;text-align:left;font:inherit;color:var(--ink);background:var(--s1);border:1px solid var(--line);padding:12px 12px 16px;cursor:pointer;transition:border-color .2s,transform .2s}
.vgroup .gc{display:block;aspect-ratio:696/1080;background:var(--s2);overflow:hidden;display:grid;place-items:center}
.vgroup .gc img{width:100%;height:100%;object-fit:contain;display:block}
.vgroup .none{color:var(--muted);font-size:.95rem;padding:12px;text-align:center}
.vgroup h3{font:400 1.4rem Anton,Impact,sans-serif;letter-spacing:.05em;text-transform:uppercase;margin:12px 0 2px}
.vgroup .gs{display:block;color:var(--muted);font-size:.95rem}
.vgroup .k{display:block;color:var(--amber);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;margin-top:6px}
.vgroup:hover,.vgroup:focus-visible{border-color:var(--amber)}
.vgroup:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.vgview h3{font:400 1.6rem Anton,Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase;margin:16px 0 18px}
.vgview h3:focus{outline:none}
.vback{margin-bottom:4px}
@media (min-width:520px){.vcover.wide{grid-column:span 2}}
.vctx{color:var(--amber);font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}

/* V41: the unnamed voice at a sealed door */
.vgrid>li{position:relative}
.vbubble{position:absolute;left:50%;top:14%;transform:translateX(-50%);width:min(88%,230px);box-sizing:border-box;z-index:5;cursor:pointer;
 background:linear-gradient(180deg,#221b11,#14100a);color:#f1e3c8;border:2px solid var(--amber);border-radius:16px 16px 16px 4px;padding:11px 14px 12px;
 font:italic 400 .95rem/1.35 "Work Sans",sans-serif;text-align:center;box-shadow:0 10px 26px rgba(0,0,0,.65),0 0 18px rgba(232,160,80,.28),inset 0 0 0 1px rgba(255,235,200,.08);animation:vpop .26s cubic-bezier(.2,1.4,.4,1) both,vfade .5s ease 4.2s forwards}
.vbubble::after{content:"";position:absolute;left:26px;bottom:-11px;width:16px;height:16px;background:#14100a;border-right:2px solid var(--amber);border-bottom:2px solid var(--amber);transform:rotate(45deg) skew(8deg,8deg)}
@keyframes vpop{from{opacity:0;transform:translateX(-50%) scale(.82)}to{opacity:1;transform:translateX(-50%) scale(1)}}
@keyframes vfade{to{opacity:0}}
@media (prefers-reduced-motion:reduce){.vbubble{animation:none}}
.vtile.locked .cv img{filter:grayscale(.6) brightness(.55)}
.vtile.locked .cv .lk{position:absolute;inset:0;display:grid;place-items:center}.vtile.locked .cv svg{width:64px;height:64px;color:#a9b6c6;filter:drop-shadow(0 2px 6px rgba(0,0,0,.85))}
.vtile.locked .cv{display:block}

/* ===== V41 atmosphere: the Vault as a place (all rules scoped to body.vault-theme) ===== */
.vault-theme .glow{position:relative;overflow:hidden;background-color:#070a0f;
 background-image:radial-gradient(ellipse 80% 38% at 50% -4%,rgba(232,160,80,.17),transparent 70%),radial-gradient(ellipse 120% 90% at 50% 40%,transparent 52%,rgba(0,0,0,.62) 100%),repeating-linear-gradient(90deg,rgba(255,255,255,.014) 0 1px,transparent 1px 4px),linear-gradient(180deg,#0b1017,#070a0f 60%,#05080c);
 background-size:auto;}
.vault-theme .glow::before{content:"";position:absolute;left:50%;top:-6%;width:min(900px,120%);height:70%;transform:translateX(-50%);pointer-events:none;z-index:0;
 background:conic-gradient(from 180deg at 50% 0%,transparent 0 160deg,rgba(255,226,170,.075) 172deg,transparent 180deg 190deg,rgba(255,226,170,.05) 196deg,transparent 204deg);
 -webkit-mask-image:linear-gradient(180deg,#000,transparent 85%);mask-image:linear-gradient(180deg,#000,transparent 85%);animation:vbreathe 9s ease-in-out infinite}
.vault-theme .glow::after{content:"";position:absolute;left:0;right:0;top:0;height:200%;pointer-events:none;z-index:0;opacity:.5;
 background-image:radial-gradient(1.2px 1.2px at 12% 18%,rgba(255,236,200,.5),transparent),radial-gradient(1px 1px at 33% 52%,rgba(255,236,200,.4),transparent),radial-gradient(1.4px 1.4px at 58% 26%,rgba(255,236,200,.45),transparent),radial-gradient(1px 1px at 76% 64%,rgba(255,236,200,.4),transparent),radial-gradient(1.2px 1.2px at 90% 38%,rgba(255,236,200,.45),transparent),radial-gradient(1px 1px at 22% 82%,rgba(255,236,200,.35),transparent),radial-gradient(1.3px 1.3px at 68% 90%,rgba(255,236,200,.4),transparent);
 background-size:100% 50%;animation:vdrift 70s linear infinite}
@keyframes vbreathe{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes vdrift{from{transform:translateY(0)}to{transform:translateY(-25%)}}
.vault-theme .phead h1{background:linear-gradient(180deg,#fbf2de 10%,#c9b891 55%,#8f805f);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 2px 10px rgba(0,0,0,.7))}
.vault-theme .phead{position:relative}
.vault-theme .phead::after{content:"";display:block;height:1px;margin-top:22px;background:linear-gradient(90deg,transparent,rgba(232,160,80,.55),transparent)}
.vault-theme .sub{color:#aab5c2}
/* metal plates */
.vault-theme .vtile,.vault-theme .vgroup,.vault-theme .vissue,.vault-theme .vchar,.vault-theme .vprev,.vault-theme .vcover,.vault-theme .vrevitem,.vault-theme .vempty{position:relative;
 background:linear-gradient(158deg,#1b2531 0%,#0f151d 52%,#16202b 100%);border:1px solid #2d3a49;
 box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 -1px 0 rgba(0,0,0,.65),0 20px 36px -18px rgba(0,0,0,.9),0 2px 5px rgba(0,0,0,.45)}
.vault-theme .vtile::before,.vault-theme .vtile::after,.vault-theme .vgroup::before,.vault-theme .vgroup::after,.vault-theme .vissue::before,.vault-theme .vissue::after,.vault-theme .vchar::before,.vault-theme .vchar::after{content:"";position:absolute;top:6px;width:7px;height:7px;border-radius:50%;pointer-events:none;
 background:radial-gradient(circle at 35% 30%,#5a6a7d,#222c38 70%);box-shadow:0 1px 1px rgba(0,0,0,.8)}
.vault-theme .vtile::before,.vault-theme .vgroup::before,.vault-theme .vissue::before,.vault-theme .vchar::before{left:6px}
.vault-theme .vtile::after,.vault-theme .vgroup::after,.vault-theme .vissue::after,.vault-theme .vchar::after{right:6px}
.vault-theme .vtile .cv,.vault-theme .vgroup .gc{box-shadow:inset 0 0 0 1px rgba(0,0,0,.7),inset 0 0 30px rgba(0,0,0,.55)}
.vault-theme .vtile h2,.vault-theme .vgroup h3,.vault-theme .vissue h3,.vault-theme .vchar h3{text-shadow:0 1px 0 rgba(0,0,0,.8)}
/* hover + selection */
.vault-theme .vtile,.vault-theme .vgroup{transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}
.vault-theme .vtile .cv,.vault-theme .vgroup .gc{position:relative;overflow:hidden}
.vault-theme .vtile .cv::after,.vault-theme .vgroup .gc::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 35%,rgba(255,232,190,.16) 50%,transparent 65%);transform:translateX(-120%);transition:transform .7s ease}
@media (hover:hover){
 .vault-theme .vtile:not(.locked):hover,.vault-theme .vgroup:hover{transform:translateY(-4px);border-color:var(--amber);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 24px 40px -16px rgba(0,0,0,.95),0 0 26px rgba(232,160,80,.2)}
 .vault-theme .vtile:not(.locked):hover .cv::after,.vault-theme .vgroup:hover .gc::after{transform:translateX(120%)}
 .vault-theme .vtile.locked:hover{border-color:#4a586a}
 .vault-theme .vcover:hover{border-color:#5a6a7d}}
.vault-theme .vtile:focus-visible .cv::after,.vault-theme .vgroup:focus-visible .gc::after{transform:translateX(120%)}
.vault-theme .vtabs button{background:linear-gradient(180deg,#1c2733,#0f151d);border-color:#2d3a49;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 4px 10px rgba(0,0,0,.4);transition:color .2s,border-color .2s,box-shadow .25s}
.vault-theme .vtabs button[aria-current=true]{background:linear-gradient(180deg,#f2b66f,#d58f3f);color:#17110a;border-color:#f2b66f;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 0 20px rgba(232,160,80,.35)}
.vault-theme .vsearch input{background:#0c1219;border-color:#2d3a49;box-shadow:inset 0 2px 6px rgba(0,0,0,.6)}
/* entering sections */
@keyframes vrise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.vault-theme .vpanel:not([hidden])>*{animation:vrise .45s ease both}
.vault-theme .vpanel:not([hidden])>*:nth-child(2){animation-delay:.07s}
.vault-theme .vgview:not([hidden])>*{animation:vrise .4s ease both}
.vault-theme .vgrid>li{animation:vrise .55s ease both;animation-delay:calc(var(--i,0)*90ms)}
.vault-theme .vgroups>li,.vault-theme .vcovers>li,.vault-theme .vissues>li,.vault-theme .vchars>li,.vault-theme .vprevs>li{animation:vrise .45s ease both}
.vault-theme .vgroups>li:nth-child(2),.vault-theme .vcovers>li:nth-child(2){animation-delay:.06s}.vault-theme .vgroups>li:nth-child(3),.vault-theme .vcovers>li:nth-child(3){animation-delay:.12s}.vault-theme .vcovers>li:nth-child(n+4){animation-delay:.18s}
dialog.vdlg{box-shadow:0 30px 80px rgba(0,0,0,.9),0 0 60px rgba(232,160,80,.08)}
@media (prefers-reduced-motion:reduce){.vault-theme .glow::before,.vault-theme .glow::after,.vault-theme .vpanel>*,.vault-theme .vgview>*,.vault-theme .vgrid>li,.vault-theme li{animation:none!important}.vault-theme .vtile,.vault-theme .vgroup,.vault-theme .vtile .cv::after,.vault-theme .vgroup .gc::after{transition:none!important}.vault-theme .vtile:hover,.vault-theme .vgroup:hover{transform:none!important}}
@media (max-width:640px){.vault-theme .glow::after{display:none}.vault-theme .glow::before{opacity:.6}}

/* ===== V42: opening sequence, typed bubble, audio strip, arrival veil ===== */
.vseq{position:fixed;inset:0;z-index:100;background:#030405;opacity:0;transition:opacity .25s ease;display:grid;place-items:center;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vseq.on{opacity:1}
.vs-in{position:absolute;inset:0;background:radial-gradient(ellipse 60% 55% at 50% 48%,rgba(240,176,95,.0),rgba(240,176,95,0) 60%),#030405;transition:background 1.2s ease}
.vseq.open .vs-in{background:radial-gradient(ellipse 55% 60% at 50% 48%,rgba(255,206,140,.55),rgba(232,155,60,.18) 45%,rgba(3,4,5,0) 75%),#030405}
.vs-stage{position:relative;width:min(76vw,calc(76vh * 696 / 1080),400px);aspect-ratio:696/1080;perspective:1400px;z-index:1}
.vs-door{position:absolute;inset:0;transform-origin:0 50%;transform-style:preserve-3d;box-shadow:0 18px 50px rgba(0,0,0,.75);transform:translateZ(0) scale(.94);transition:transform .5s cubic-bezier(.2,.8,.2,1);background:#0d141b}
.vseq.on .vs-door{transform:scale(1)}
.vs-face{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.vs-wheel{position:absolute;inset:0;width:100%;height:100%}
.vs-rot{transform-origin:348px 500px;transform-box:view-box}
.vseq.turn .vs-rot{animation:vsturn 1.05s cubic-bezier(.45,.05,.4,1) forwards}
.vseq.release .vs-rot{animation:none;transform:rotate(300deg)}
@keyframes vsturn{from{transform:rotate(0)}to{transform:rotate(300deg)}}
.vs-door.custom .wf{fill-opacity:0}
.vs-bolt{position:absolute;right:-1%;width:7%;height:3.4%;background:linear-gradient(#5a6b80,#2a3644);border:1px solid #0a0f15;border-radius:2px;transition:transform .28s cubic-bezier(.5,0,.8,.4);transform:translateX(0)}
.vseq.release .vs-bolt{transform:translateX(120%)}
.vseq.open .vs-door{transition:transform 1.15s cubic-bezier(.45,.02,.3,1);transform:rotateY(-76deg) scale(1);box-shadow:30px 10px 60px rgba(0,0,0,.8)}
.vs-veil{position:absolute;inset:0;background:#030405;opacity:0;pointer-events:none;transition:opacity .55s ease;z-index:2}
.vseq.fade .vs-veil{opacity:1}
.vseq.open .vs-stage{animation:vsrumble .9s linear}
@keyframes vsrumble{0%,100%{transform:translate(0)}15%{transform:translate(-1px,1px)}30%{transform:translate(1px,-1px)}45%{transform:translate(-1px,0)}60%{transform:translate(1px,1px)}80%{transform:translate(0,-1px)}}
.vveil{position:fixed;inset:0;z-index:100;background:#030405;pointer-events:none;animation:vveil .9s ease .05s forwards}
@keyframes vveil{to{opacity:0;visibility:hidden}}
@media (prefers-reduced-motion:reduce){.vseq,.vs-door,.vs-bolt,.vs-in,.vs-veil{transition:none!important}.vseq .vs-rot,.vseq.open .vs-stage{animation:none!important}.vveil{animation:none;display:none}}

/* typed message: the invisible full line fixes the bubble's size, the typed copy sits on top */
.vb-in{display:block;position:relative}
.vb-ghost{display:block;visibility:hidden}
.vb-typed{position:absolute;left:0;right:0;top:0;text-align:center}
.vb-caret{display:inline-block;margin-left:1px;color:#f0b35f;animation:vcaret .8s steps(1) infinite;position:absolute;bottom:0;right:0;opacity:.0}
.vb-typed::after{content:"\258c";color:#f0b35f;opacity:.85;animation:vcaret .8s steps(1) infinite;margin-left:1px}
.vb-caret{display:none}
@keyframes vcaret{50%{opacity:0}}
.vbubble{letter-spacing:.02em;text-shadow:0 0 8px rgba(240,176,95,.35)}
.vbubble{animation:vpop .26s cubic-bezier(.2,1.4,.4,1) both}
@media (prefers-reduced-motion:reduce){.vb-typed::after{animation:none;opacity:0}.vbubble{animation:none}}

/* the lock itself strains when the door will not open */
.vtile.locked.shake .lk{animation:vlkrattle .42s}
@keyframes vlkrattle{0%,100%{transform:rotate(0)}15%{transform:rotate(-14deg)}30%{transform:rotate(12deg)}45%{transform:rotate(-9deg)}60%{transform:rotate(7deg)}80%{transform:rotate(-3deg)}}
@media (prefers-reduced-motion:reduce){.vtile.locked.shake .lk{animation:none}}

/* sound controls inside the Vault */
.vaudio{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding-top:10px;padding-bottom:0}
.vaudio-note{margin-right:auto;font:400 .8rem "Work Sans",sans-serif;color:#8a94a1;letter-spacing:.04em}
.snd-switch.snd-inline{position:static}
.vmusic{display:inline-flex;align-items:center;gap:9px;font:600 .72rem "Work Sans",sans-serif;letter-spacing:.1em;text-transform:uppercase;color:#8a94a1;background:rgba(11,15,21,.9);border:1px solid #3a4452;border-radius:999px;padding:7px 12px;cursor:pointer;min-height:34px}
.vmusic:hover{color:#b7c0cb;border-color:#6b7889}
.vmusic.on{color:#f2b05f;border-color:rgba(232,155,60,.6);box-shadow:0 0 0 1px rgba(232,155,60,.16),0 0 16px rgba(232,155,60,.26)}
.vmusic:focus-visible,.snd-inline:focus-visible{outline:2px solid #f2b05f;outline-offset:3px}
