/* Gravepedia site pages: login, register, dashboard, admin */
*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0b0e1a;--card:#141829;--card2:#1a1f35;--line:#2a3050;--text:#eceaf4;--muted:#9aa0bd;--gold:#e8c27a;--ink:#1a1405;--ok:#34d399;--bad:#f87171;--warn:#fbbf24}
body.site-body{min-height:100vh;font-family:Inter,system-ui,sans-serif;background:radial-gradient(900px 400px at 80% -10%,#1d2347,transparent 60%),var(--bg);color:var(--text);line-height:1.55;overflow:auto;height:auto;display:block}
a{color:var(--gold)}
.btn,.btn-sm{display:inline-flex;align-items:center;gap:6px;background:var(--gold);color:var(--ink);border:0;border-radius:12px;padding:11px 20px;font:600 14px Inter,sans-serif;cursor:pointer;text-decoration:none;transition:.15s}
.btn:hover,.btn-sm:hover{filter:brightness(1.08)}
.btn-sm{padding:7px 12px;font-size:13px;border-radius:10px}
.btn.ghost,.btn-sm.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}
.btn-sm.danger{background:#3a1519;color:#ffb4bd;border:1px solid #5b2229}
.btn-sm.good{background:#12301f;color:#9be9bd;border:1px solid #1f5a39}
.auth-wrap,.msg-card{max-width:420px;margin:8vh auto;padding:0 16px}
.msg-card{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:32px 24px}
.msg-card h1{font:700 26px 'Cormorant Garamond',Georgia,serif;margin-bottom:8px;color:var(--gold)}
.msg-card p{color:var(--muted);margin-bottom:16px}
.auth-card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:28px 24px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.brand{font:700 30px 'Cormorant Garamond',Georgia,serif;color:var(--gold);text-align:center;margin-bottom:6px;text-decoration:none;display:block}
.auth-card h1{font:600 20px Inter,sans-serif;text-align:center;margin-bottom:4px}
.auth-card .sub{color:var(--muted);text-align:center;font-size:14px;margin-bottom:18px}
label.f{display:block;font:600 12px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:12px 0 6px}
input.in,select.in{width:100%;background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:12px 14px;font:inherit}
input.in:focus,select.in:focus{outline:2px solid var(--gold);border-color:transparent}
.auth-card .btn{width:100%;justify-content:center;margin-top:18px}
.alt{text-align:center;margin-top:16px;color:var(--muted);font-size:14px}
.note{border-radius:12px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.note.ok{background:#12301f;color:#9be9bd}.note.bad{background:#35161a;color:#ffb4bd}
/* dashboard */
.dash{max-width:1040px;margin:0 auto;padding:22px 16px 60px}
.topline{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between;margin-bottom:22px}
.topline .brand{text-align:left;margin:0;font-size:28px}
.topline .who{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:14px}
h2.sec{font:600 13px Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:26px 0 12px}
.mcard{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px 18px;margin-bottom:14px}
.mcard .row1{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.mcard h3{font:600 18px Inter,sans-serif}
.mcard .meta{color:var(--muted);font-size:13px;margin-top:2px;word-break:break-all}
.badge{display:inline-block;font:600 11px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;border:1px solid var(--line);margin-left:8px;vertical-align:middle}
.badge.published{color:var(--ok);border-color:#1f5a39;background:#10261a}
.badge.private{color:var(--warn);border-color:#5b4515;background:#2a2108}
.badge.draft{color:var(--muted)}
.badge.pend{color:#111;background:var(--gold);border-color:var(--gold)}
.mform{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.mform .in{width:auto;min-width:150px;padding:8px 12px;border-radius:10px;font-size:14px}
.acts{display:flex;gap:8px;flex-wrap:wrap}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tabs a{padding:7px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);text-decoration:none;font-size:13px}
.tabs a.on{background:var(--gold);color:var(--ink);border-color:var(--gold);font-weight:600}
.trib{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;display:flex;gap:12px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
.trib .body{flex:1 1 320px;min-width:0}
.trib b{color:var(--gold)}.trib small{color:var(--muted);margin-left:6px}
.trib p{margin-top:4px;white-space:pre-wrap;word-break:break-word}
.empty{color:var(--muted);border:1px dashed var(--line);border-radius:14px;padding:18px;text-align:center}
table.tb{width:100%;border-collapse:collapse;font-size:14px;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
table.tb th,table.tb td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
table.tb th{color:var(--muted);font:600 11px Inter,sans-serif;letter-spacing:.1em;text-transform:uppercase;background:var(--card2)}
.scroll-x{overflow-x:auto}
.stats{display:flex;gap:12px;flex-wrap:wrap}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 18px;min-width:120px}
.stat b{display:block;font-size:24px;color:var(--gold)}.stat span{color:var(--muted);font-size:12px}
@media (max-width:560px){.mform .in{flex:1 1 100%}}

/* ===== dashboard: memorial boxes with a live page thumbnail ===== */
.dash{max-width:1180px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-bottom:26px}
.mbox{background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s,border-color .25s}
.mbox:hover{transform:translateY(-3px);border-color:var(--gold);box-shadow:0 14px 40px rgba(0,0,0,.4)}
.mthumb{position:relative;display:block;background:#0b0d16;border-bottom:1px solid var(--line);cursor:pointer}
.mframe{position:relative;width:100%;aspect-ratio:1100/760;overflow:hidden}
.mframe iframe{position:absolute;left:0;top:0;width:1100px;height:760px;border:0;transform-origin:0 0;pointer-events:none;background:#0b0d16}
.mhint{position:absolute;inset:0;display:grid;place-items:center;background:rgba(5,6,12,.55);color:#fff;font:600 14px Inter,sans-serif;opacity:0;transition:.25s;backdrop-filter:blur(2px)}
.mthumb:hover .mhint{opacity:1}
.mthumb .badge{position:absolute;left:10px;top:10px;backdrop-filter:blur(6px)}
.mthumb .badge.pos2{left:auto;right:10px}
.minfo{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.minfo h3{font:600 17px Inter,sans-serif;word-break:break-word}
.minfo .meta{color:var(--muted);font-size:12.5px;line-height:1.6;word-break:break-all}
.minfo .acts{display:flex;gap:8px;flex-wrap:wrap}
.mset{margin-top:auto;border-top:1px dashed var(--line);padding-top:10px}
.mset summary{cursor:pointer;color:var(--muted);font-size:13px;list-style:none}
.mset summary::before{content:"⚙ "}
.mset[open] summary{margin-bottom:10px;color:var(--text)}
.mset .mform{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mset .mform .in{flex:1;min-width:90px}
em.rel{font-style:normal;font-size:11px;font-weight:600;color:var(--gold);border:1px solid var(--line);border-radius:999px;padding:2px 9px;margin-left:6px}
@media (max-width:520px){.mgrid{grid-template-columns:1fr}}

/* QR popup */
.qr-pop{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px}
.qr-pop[hidden]{display:none}
.qr-card{background:var(--card,#141828);border:1px solid var(--line,#2a3050);border-radius:16px;padding:18px;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:320px;width:100%}
.qr-url{font-size:12px;color:var(--muted,#8d93b3);word-break:break-all;text-align:center}
.pub-qr{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#fff;border-radius:12px}
.pub-qr[hidden]{display:none}
.pub-qr img{display:block;width:160px;height:160px;image-rendering:pixelated}
.qr-dl{font:600 13px Inter,sans-serif;color:#1f2937;text-decoration:none;border:1px solid #cbd0dc;border-radius:999px;padding:6px 14px}
