/* Memory Archive (hub/memory-archive.js) and the Research Wing's Memories entry.
   Native <dialog> at body level, like the EDEN optical projection, so it keeps
   real viewport units outside the Hub room's fitted canvas. Palette is the
   fragment's own: opal violet for the glass, warm amber for recovered light. */
.memory-archive { position:fixed; inset:0; width:100vw; height:100dvh; max-width:none; max-height:none; margin:0; padding:0; border:0; background:transparent; color:#e9e4f4; font-family:var(--font-stack,system-ui,sans-serif); }
.memory-archive::backdrop { background:rgba(4,6,14,.62); backdrop-filter:blur(5px) saturate(.7); }
/* `hidden` must win inside the Archive: an author `display` rule (.ma-play is inline-flex)
   beats the browser's own [hidden] rule, which once left a dead Play button showing on
   every memory whose film was not there yet. */
.memory-archive [hidden] { display:none !important; }
.ma-frame { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:min(1180px,calc(100vw - 48px)); height:min(760px,calc(100dvh - 48px)); display:flex; flex-direction:column; border:1px solid #b9a6e84d; border-radius:14px; background:linear-gradient(160deg,#141225f2,#0a1220f2 60%,#0b1018f2); box-shadow:0 0 0 1px #00000080,0 30px 80px #000c,inset 0 1px #ffffff10; overflow:hidden; animation:ma-in .32s cubic-bezier(.2,.75,.25,1) both; }
.ma-frame:before { content:''; position:absolute; left:40px; right:40px; top:-1px; height:2px; background:linear-gradient(90deg,transparent,#d9c6ff,#ffd59a,transparent); opacity:.8; pointer-events:none; }
.ma-bar { display:flex; align-items:center; gap:18px; padding:20px 26px 18px; border-bottom:1px solid #b9a6e826; }
.ma-bar h1 { margin:0; font:600 26px/1.1 var(--font-stack,system-ui,sans-serif); letter-spacing:.02em; color:#f1ecfb; }
.ma-count { margin-left:auto; font:500 14px var(--font-mono,ui-monospace,monospace); letter-spacing:.08em; color:#cdb98d; text-transform:uppercase; }
.ma-close { width:40px; height:40px; border:1px solid #b9a6e84d; border-radius:50%; background:#ffffff08; color:#d8d0ea; font-size:16px; cursor:pointer; }
.ma-close:hover,.ma-close:focus-visible { border-color:#e7d8ff; color:#fff; outline:none; background:#ffffff14; }
.ma-body { flex:1; min-height:0; display:grid; grid-template-columns:minmax(260px,330px) 1fr; }
.ma-list { overflow-y:auto; padding:12px; border-right:1px solid #b9a6e81f; display:flex; flex-direction:column; gap:4px; }
.ma-item { display:grid; grid-template-columns:32px 1fr; grid-template-rows:auto auto; column-gap:10px; row-gap:6px; align-items:center; text-align:left; padding:11px 12px; border:1px solid transparent; border-radius:9px; background:transparent; color:#cfc7e2; cursor:pointer; font:inherit; }
.ma-item:not(:disabled):hover,.ma-item:focus-visible { background:#ffffff0a; border-color:#b9a6e83d; outline:none; }
.ma-item.selected { background:linear-gradient(110deg,#2a2347,#1a2236); border-color:#c9b6f580; color:#f4efff; }
.ma-item:disabled { cursor:default; opacity:.55; }
.ma-num { grid-row:1/3; font:600 15px var(--font-mono,ui-monospace,monospace); color:#9d8fbf; }
.ma-item.is-restored .ma-num { color:#ffd59a; text-shadow:0 0 10px #ffc66f66; }
.ma-name { font:500 16px/1.25 var(--font-stack,system-ui,sans-serif); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ma-marks { display:flex; align-items:center; gap:8px; }
.ma-core { display:inline-block; width:11px; height:11px; border-radius:50%; border:1px solid #ffd59a80; background:radial-gradient(circle at 35% 35%,#3a3050,#1a1628); flex:none; }
.ma-core.on { background:radial-gradient(circle at 35% 35%,#fff3d6,#e9b4ff 55%,#9c7cd8); border-color:#ffd59a; box-shadow:0 0 0 2px #ffd59a33,0 0 8px #ffc66f99; }
.ma-dots { display:flex; gap:5px; }
.ma-dots i { width:7px; height:7px; border-radius:50%; border:1px solid #9d8fbf80; }
.ma-dots i.on { background:radial-gradient(circle at 35% 35%,#fff3d6,#f2b866); border-color:#ffd59a; box-shadow:0 0 6px #ffc66f88; }
.ma-redact { display:inline-block; height:.72em; vertical-align:middle; border-radius:3px; background:repeating-linear-gradient(90deg,#9d8fbf38 0 6px,#9d8fbf22 6px 9px); }
.ma-detail { overflow-y:auto; padding:28px 36px 30px; display:flex; flex-direction:column; min-width:0; }
.ma-empty { flex:1; display:grid; place-items:center; }
.ma-empty img { width:150px; height:150px; object-fit:contain; opacity:.35; filter:grayscale(.4); }
.ma-head { display:flex; align-items:center; gap:18px; margin-bottom:22px; }
.ma-index { font:600 40px/1 var(--font-mono,ui-monospace,monospace); color:#ffd59a; text-shadow:0 0 18px #ffc66f55; }
.ma-head h2 { margin:0; font:600 30px/1.15 var(--font-stack,system-ui,sans-serif); color:#f6f1ff; }
.ma-head small { display:block; margin-top:5px; font:500 12px/1.4 var(--font-mono,ui-monospace,monospace); letter-spacing:.14em; text-transform:uppercase; color:#9fa6c4; }
.ma-film { margin:0 0 6px; }
.ma-film.is-sealed { display:flex; align-items:center; gap:10px; padding:14px 16px; border:1px dashed #9d8fbf40; border-radius:10px; font:500 13px var(--font-mono,ui-monospace,monospace); letter-spacing:.08em; text-transform:uppercase; color:#8f84ad; }
.ma-transcript { padding:14px 18px 6px; border-left:2px solid #c9b6f566; background:linear-gradient(90deg,#c9b6f50d,transparent 70%); border-radius:0 10px 10px 0; }
.ma-tag { display:block; margin-bottom:8px; font:600 11px/1.4 var(--font-mono,ui-monospace,monospace); letter-spacing:.14em; text-transform:uppercase; color:#cdb98d; }
.ma-scene { margin:0 0 12px; font:italic 400 16px/1.55 var(--font-stack,system-ui,sans-serif); color:#d9d1ec; }
.ma-lines.ma-vo { gap:8px; margin-bottom:8px; }
.ma-lines.ma-vo .ma-text { font-size:17px; }
.ma-sub { display:flex; align-items:baseline; gap:10px; margin:22px 0 12px; font:600 13px var(--font-mono,ui-monospace,monospace); letter-spacing:.14em; text-transform:uppercase; color:#a799cf; }
.ma-sub span { color:#cdb98d; letter-spacing:.06em; }
.ma-lore { display:block; margin-top:4px; font:400 14px/1.45 var(--font-stack,system-ui,sans-serif); color:#a9a3bf; }
.ma-restored { display:inline-block; margin-top:5px; padding:1px 7px; border:1px solid #ffd59a66; border-radius:999px; font:600 10px/1.5 var(--font-mono,ui-monospace,monospace); letter-spacing:.12em; text-transform:uppercase; color:#ffd59a; }
.ma-lines li.is-restored .ma-who { color:#ffd59a; }
.ma-screen { position:relative; margin:0 0 22px; border-radius:10px; overflow:hidden; background:#000; box-shadow:0 0 0 1px #c9b6f540,0 12px 40px #000a; }
.ma-screen video { display:block; width:100%; max-height:52dvh; background:#000; }
.ma-lines { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.ma-lines li { display:grid; grid-template-columns:minmax(120px,190px) 1fr; gap:18px; align-items:baseline; }
.ma-who { font:500 12px/1.5 var(--font-mono,ui-monospace,monospace); letter-spacing:.12em; text-transform:uppercase; color:#a799cf; }
.ma-text { font:400 21px/1.45 var(--font-stack,system-ui,sans-serif); color:#ece6f7; }
.ma-lines li.is-lost .ma-text,.ma-lines li.is-lost .ma-who { line-height:1.45; }
.ma-note { margin:26px 0 0; padding-left:14px; border-left:2px solid #ffd59a99; font:italic 400 17px/1.5 var(--font-stack,system-ui,sans-serif); color:#e6d6b4; }
.ma-actions { margin-top:22px; }
.ma-play { display:inline-flex; align-items:center; gap:10px; min-height:48px; padding:10px 22px; border:1px solid #ffd59aa6; border-radius:10px; background:linear-gradient(118deg,#4a3a62,#2a2a48 70%); color:#fff4dc; font:600 17px var(--font-stack,system-ui,sans-serif); cursor:pointer; box-shadow:inset 0 1px #fff3, 0 4px 14px #0007; }
.ma-play:hover,.ma-play:focus-visible { border-color:#ffe7bd; outline:none; box-shadow:inset 0 1px #fff3,0 0 22px #ffc66f33,0 4px 14px #0007; }
@keyframes ma-in { from { opacity:0; transform:translate(-50%,-48%) scale(.985); } to { opacity:1; transform:translate(-50%,-50%); } }
@media (prefers-reduced-motion: reduce) { .ma-frame { animation:none; } }
@media (max-width: 900px) {
  .ma-body { grid-template-columns:1fr; grid-template-rows:auto 1fr; }
  .ma-list { flex-direction:row; overflow-x:auto; overflow-y:hidden; border-right:0; border-bottom:1px solid #b9a6e81f; }
  .ma-item { min-width:190px; }
  .ma-detail { padding:22px 20px; }
  .ma-lines li { grid-template-columns:1fr; gap:4px; }
}

/* Research Wing footer: the Memories entry (replaces the former point purchase).
   Same purchase-card skeleton as Respec's neighbour so the footer keeps its rhythm. */
#screen-research .rtv-economy .rtv-memories { position:relative; display:grid; grid-template-columns:48px minmax(135px,1fr) auto; align-items:center; gap:15px; min-height:78px; padding:10px 18px 10px 12px; border:1px solid #b9a6e8a6; border-radius:12px; background:linear-gradient(118deg,#352d52,#1f2a44 65%,#14222f); box-shadow:inset 0 1px #f0e6ff38,inset 0 -3px #020c1166,0 5px 14px #0005; color:#f2edfb; text-align:left; letter-spacing:0; text-shadow:0 1px 2px #0007; transition:border-color .16s,box-shadow .16s,background .16s; }
#screen-research .rtv-economy .rtv-memories:before { content:''; position:absolute; left:18px; right:18px; top:-1px; height:2px; background:linear-gradient(90deg,transparent,#d9c6ff,#ffd59a,transparent); opacity:.9; pointer-events:none; }
#screen-research .rtv-economy .rtv-memories:hover { background:linear-gradient(118deg,#40375f,#26324f 65%,#182a38); border-color:#e4d6ff; box-shadow:inset 0 1px #f0e6ff45,inset 0 -3px #020c1166,0 0 22px #c9b6f526,0 5px 14px #0005; }
#screen-research .rtv-economy .rtv-memories .rtv-purchase-seal { border-color:#c9b6f580; background:radial-gradient(circle,#6a4f9a40,#0d1628 76%); }
.rtv-memories .rtv-purchase-seal img { width:40px; height:40px; object-fit:contain; filter:drop-shadow(0 0 6px #c9a8ff55); }
#screen-research .rtv-economy .rtv-memories .rtv-purchase-price { border-left-color:#c9b6f538; color:#ffe3b3; }
.rtv-memories .rtv-new { position:absolute; top:9px; right:10px; width:9px; height:9px; border-radius:50%; background:#ffd59a; box-shadow:0 0 0 3px #ffd59a26,0 0 10px #ffc66f; animation:rtv-new-pulse 1.8s ease-in-out infinite; }
@keyframes rtv-new-pulse { 50% { box-shadow:0 0 0 6px #ffd59a12,0 0 16px #ffc66f; } }
@media (prefers-reduced-motion: reduce) { .rtv-memories .rtv-new { animation:none; } #screen-research .rtv-economy .rtv-memories { transition:none; } }
@media (pointer:coarse),(max-width:900px) { #screen-research .rtv-economy .rtv-memories { grid-template-columns:44px minmax(0,1fr) auto; gap:12px; padding:12px; min-height:80px; width:100%; } }
@media (max-width:360px) { #screen-research .rtv-economy .rtv-memories { grid-template-columns:44px minmax(0,1fr); gap:7px 12px; } }
