/* Forever Known - premium theme (navy + gold, warm cream). No external fonts. */
:root{
  --bg:#f4efe4; --bg-2:#efe7d8; --card:#fbf8f1; --card-2:#fffdf8;
  --ink:#23201c; --soft:#6f665c; --faint:#a99f8d;
  --navy:#0b2340; --navy-2:#143257; --navy-ink:#eaf0f7;
  --gold:#b6894b; --gold-l:#d9b67a; --gold-d:#9c7333;
  --gold-ink:#7a5720; --gold-btn:#8a6218; --gold-btn-d:#6f4e12;
  --line:#e7decc; --line-2:#ded3bd; --green:#5f7d5a; --danger:#b23b2e;
  --serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,"Times New Roman",serif;
  --sans:"Century Gothic","Futura","Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
  --shadow:0 22px 52px -36px rgba(11,35,64,.55);
  --shadow-sm:0 12px 30px -24px rgba(11,35,64,.5);
  --radius:18px; --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--serif);
  font-size:19px;line-height:1.62;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%}
::selection{background:rgba(182,137,75,.22)}
/* accessibility: visible keyboard focus, screen-reader-only text, skip link */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,
[tabindex]:focus-visible,.vbtn:focus-visible,.tlchip:focus-visible,.navitem:focus-visible,.tabitem:focus-visible,
.tile:focus-visible,.pchip:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skiplink{position:absolute;left:12px;top:-60px;z-index:200;background:var(--navy);color:#fff;font-family:var(--sans);
  font-weight:700;padding:12px 18px;border-radius:10px;text-decoration:none;transition:top .18s var(--ease)}
.skiplink:focus{top:12px}

/* ---------- app shell (SPA) ---------- */
#app{min-height:100vh;display:flex;flex-direction:column}
.screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:34px 22px;max-width:730px;margin:0 auto;width:100%;text-align:center}
.mark{font-family:var(--sans);font-size:.72rem;letter-spacing:.42em;text-transform:uppercase;
  color:var(--gold-ink);margin-bottom:16px;font-weight:700}
h1{font-weight:400;line-height:1.06;font-size:clamp(2.15rem,6vw,3.35rem);letter-spacing:.006em;text-wrap:balance}
h1 .accent{color:var(--gold-ink);font-style:italic}
.lead{color:var(--soft);font-size:1.12rem;margin-top:16px;max-width:34rem}
.rule{width:3.4rem;height:1px;background:linear-gradient(90deg,transparent,var(--line-2),transparent);margin:26px auto}
.q{font-size:clamp(1.5rem,4.4vw,2.15rem);line-height:1.3;margin:10px 0 6px}
.ack{color:var(--gold-ink);font-style:italic;font-size:1.05rem;margin-bottom:14px}
.fkmark{display:block;margin:0 auto}
.fkmark.hero{width:min(340px,74vw);margin-bottom:2px}
.fkmark.head{width:190px;max-width:60%;margin-bottom:4px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:58px;padding:15px 30px;border:none;border-radius:40px;cursor:pointer;
  font-family:var(--sans);font-weight:600;letter-spacing:.02em;font-size:1.02rem;
  background:var(--gold-btn);color:#fff;box-shadow:0 10px 24px -10px rgba(111,78,18,.55);
  transition:transform .12s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease)}
.btn:hover{background:var(--gold-btn-d);box-shadow:0 14px 30px -12px rgba(111,78,18,.65)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:3px solid rgba(182,137,75,.5);outline-offset:2px}
.btn.secondary{background:transparent;color:var(--ink);border:1.5px solid var(--line-2);box-shadow:none}
.btn.secondary:hover{border-color:var(--gold);color:var(--gold-ink);background:rgba(182,137,75,.05)}
.btn.navy{background:var(--navy);box-shadow:0 12px 26px -12px rgba(11,35,64,.6)}
.btn.navy:hover{background:var(--navy-2)}
.btn.wide{width:100%;max-width:26rem}
.btn.ghost{background:transparent;color:var(--soft);box-shadow:none;min-height:auto;padding:10px 16px;
  font-size:1rem;font-family:var(--sans);font-weight:600}
.btn.ghost:hover{color:var(--gold-ink)}

.stack{display:flex;flex-direction:column;gap:14px;align-items:center;width:100%;margin-top:26px}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%;max-width:30rem;margin-top:24px}
@media(max-width:460px){.grid{grid-template-columns:1fr}}
.tile{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:20px 16px;
  cursor:pointer;font-size:1.06rem;color:var(--ink);font-family:var(--serif);
  transition:border-color .2s var(--ease),transform .12s var(--ease),box-shadow .2s var(--ease)}
.tile:hover{border-color:var(--gold);box-shadow:var(--shadow-sm);transform:translateY(-2px)}
.tile:active{transform:translateY(0)}

input.text,textarea,select.text{width:100%;max-width:34rem;font-family:var(--serif);font-size:1.14rem;
  color:var(--ink);background:var(--card-2);border:1.5px solid var(--line-2);border-radius:14px;
  padding:15px 18px;margin-top:20px;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
textarea{min-height:170px;resize:vertical;text-align:left;line-height:1.6}
input.text:focus,textarea:focus,select.text:focus{outline:none;border-color:var(--gold);
  box-shadow:0 0 0 4px rgba(182,137,75,.12)}

.topbar{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:730px;
  margin:0 auto;padding:15px 22px;border-bottom:1px solid var(--line)}
.topbar .who{font-size:.98rem;color:var(--soft);font-family:var(--sans)}
.topbar a{color:var(--gold-ink);text-decoration:underline;font-size:.98rem;font-family:var(--sans);font-weight:600}

.methods{display:flex;flex-direction:column;gap:12px;width:100%;max-width:26rem;margin-top:26px}
.rec{width:100%;max-width:30rem;margin-top:22px;background:var(--card);border:1.5px solid var(--line);
  border-radius:18px;padding:20px;box-shadow:var(--shadow-sm)}
.rec video{width:100%;border-radius:12px;background:#000;max-height:52vh}
.rec audio,.rec video.playback{width:100%}
.timer{font-size:1.4rem;color:var(--gold-ink);margin:10px 0;font-family:var(--sans)}
.dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#c0392b;margin-right:8px;
  animation:pulse 1.2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.spinner{color:var(--soft);font-style:italic;margin-top:22px}
.err{color:var(--danger);margin-top:16px;font-size:1rem}
.small{font-size:.96rem;color:var(--soft);margin-top:10px}

/* ---------- app nav: desktop rail + mobile tabs (body-appended by app.js) ---------- */
.navrail{display:none}
.tabbar{display:none}
.navrail .brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:22px;padding:6px}
.navrail .brand img{width:132px}
.navrail .brand .wm{font-family:var(--sans);font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-l);font-weight:700}
.navitem{display:flex;align-items:center;gap:13px;padding:13px 15px;border-radius:12px;cursor:pointer;
  background:transparent;border:none;color:var(--navy-ink);font-family:var(--sans);font-weight:600;
  font-size:1rem;text-align:left;width:100%;transition:background .2s var(--ease),color .2s var(--ease)}
.navitem .ic{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;opacity:.9}
.navitem:hover{background:rgba(255,255,255,.08)}
.navitem.on{background:rgba(217,182,122,.18);color:#fff}
.navrail .railfoot{margin-top:auto;display:flex;flex-direction:column;gap:5px;border-top:1px solid rgba(255,255,255,.1);padding-top:10px}
.tabitem{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:transparent;border:none;
  color:rgba(234,240,247,.72);font-family:var(--sans);font-size:.7rem;font-weight:600;cursor:pointer;padding:6px 2px}
.tabitem .ic{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px}
.tabitem.on{color:var(--gold-l)}
@media(min-width:920px){
  body.hasnav #app{padding-left:238px}
  body.hasnav .navrail{display:flex;flex-direction:column;gap:5px;width:238px;height:100vh;position:fixed;left:0;top:0;
    background:linear-gradient(180deg,var(--navy),#081b32);color:var(--navy-ink);padding:26px 18px;z-index:40}
  body.hasnav .topbar{display:none}
}
@media(max-width:919px){
  body.hasnav{padding-bottom:80px}
  body.hasnav .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--navy);
    padding:9px 6px calc(9px + env(safe-area-inset-bottom));box-shadow:0 -10px 30px -18px rgba(0,0,0,.5)}
  body.hasnav .topbar{display:none}
}

/* ---------- public + review profile shell ---------- */
body.pub{display:block}
.profile{max-width:820px;margin:0 auto;padding:0 0 90px}
.profile.pad{padding:28px 22px 90px}
.phead{text-align:center;margin-bottom:22px;padding-top:28px}
.phead h1{margin-top:8px}

/* premium cover header */
.cover{position:relative;overflow:hidden;background:
  radial-gradient(120% 140% at 50% -10%,rgba(217,182,122,.22),transparent 60%),
  linear-gradient(170deg,var(--navy),#081b32);
  color:var(--navy-ink);padding:40px 22px 84px;text-align:center}
.cover.hasimg{padding-top:120px}
.cover .coverimg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.34;filter:saturate(.9)}
.cover .coverimg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,27,50,.5),rgba(8,27,50,.86))}
.cover .cinner{position:relative;max-width:720px;margin:0 auto}
.cover .pbrand{display:flex;flex-direction:column;align-items:center;gap:7px;margin-bottom:20px}
.cover .pbrand img{width:150px;max-width:52%}
.cover .pbrand .wm{font-family:var(--sans);font-size:.64rem;letter-spacing:.36em;text-transform:uppercase;color:var(--gold-l);font-weight:700}
.portrait{width:132px;height:132px;border-radius:50%;object-fit:cover;margin:6px auto 0;display:block;
  border:3px solid rgba(217,182,122,.85);box-shadow:0 16px 40px -18px rgba(0,0,0,.7);background:#0e2745}
.portrait.mono{display:flex;align-items:center;justify-content:center;font-family:var(--serif);
  font-size:3rem;color:var(--gold-l)}
.cover h1{color:#fff;margin-top:16px;font-size:clamp(2.2rem,6.4vw,3.4rem)}
.cover .ptag{color:rgba(234,240,247,.82);font-style:italic;margin-top:8px;font-size:1.08rem}
.cover .pcount{font-family:var(--sans);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold-l);margin-top:14px;font-weight:700}

/* sticky sub-nav on public page */
.pnav{position:sticky;top:0;z-index:30;background:rgba(244,239,228,.9);backdrop-filter:saturate(1.1) blur(8px);
  border-bottom:1px solid var(--line);margin-bottom:26px}
.pnav .pnav-in{max-width:820px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}
.viewtoggle{display:inline-flex;background:var(--bg-2);border:1px solid var(--line-2);border-radius:30px;padding:4px}
.vbtn{border:none;background:transparent;font-family:var(--sans);font-weight:700;font-size:.9rem;color:var(--soft);
  padding:8px 18px;border-radius:26px;cursor:pointer;transition:all .25s var(--ease);letter-spacing:.03em}
.vbtn.on{background:#fff;color:var(--navy);box-shadow:var(--shadow-sm)}
.psearch{position:relative;flex:1;min-width:180px;max-width:320px}
.psearch input{width:100%;font-family:var(--serif);font-size:1rem;color:var(--ink);background:var(--card-2);
  border:1.5px solid var(--line-2);border-radius:30px;padding:10px 16px 10px 38px;margin:0}
.psearch input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 4px rgba(182,137,75,.12)}
.psearch .si{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--soft);font-size:1rem}
.yearjump{font-family:var(--sans);font-size:.9rem;color:var(--navy);background:var(--card-2);
  border:1.5px solid var(--line-2);border-radius:30px;padding:9px 14px;cursor:pointer}
.yearjump:focus{outline:none;border-color:var(--gold)}

.wrapin{max-width:820px;margin:0 auto;padding:0 20px}
.bio{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px 30px;
  font-size:1.12rem;line-height:1.78;margin-bottom:30px;text-align:left;box-shadow:var(--shadow-sm);position:relative}
.bio::before{content:'';position:absolute;left:0;top:22px;bottom:22px;width:3px;border-radius:3px;
  background:linear-gradient(180deg,var(--gold-l),var(--gold))}

/* memory / story cards */
.mem{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px 26px;
  margin-bottom:18px;text-align:left;box-shadow:var(--shadow-sm);transition:box-shadow .25s var(--ease),transform .25s var(--ease)}
.mem:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.mem h3{font-weight:400;color:var(--gold-ink);font-size:1.24rem;margin-bottom:6px;letter-spacing:.005em}
.mem .cat{font-family:var(--sans);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--soft);font-weight:700;margin-bottom:10px}
.mem p{margin-top:2px}
.mem audio,.mem video,.mem img{width:100%;border-radius:12px;margin:4px 0 8px}
.mem video,.mem img{max-height:62vh;object-fit:contain;background:#0b1a2e}
.mem img{object-fit:cover;cursor:zoom-in}
.empty{text-align:center;color:var(--soft);font-style:italic;padding:20px}
.pfoot{text-align:center;color:var(--soft);font-style:italic;margin-top:44px;padding:0 20px}
.pfoot .fkmark{width:88px;opacity:.7;margin-bottom:12px}

/* branded voice player */
.voicecard{position:relative;padding-left:16px}
.voicecard::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:4px;border-radius:4px;
  background:linear-gradient(180deg,var(--gold-l),var(--gold-d))}
.voicelabel{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-size:.7rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--gold-ink);font-weight:700;margin-bottom:8px}
.voicelabel .wv{display:inline-flex;gap:2px;align-items:flex-end;height:14px}
.voicelabel .wv i{width:2px;background:var(--gold);border-radius:2px;animation:wv 1.1s var(--ease) infinite}
.voicelabel .wv i:nth-child(1){height:5px;animation-delay:0s}
.voicelabel .wv i:nth-child(2){height:11px;animation-delay:.15s}
.voicelabel .wv i:nth-child(3){height:8px;animation-delay:.3s}
.voicelabel .wv i:nth-child(4){height:13px;animation-delay:.45s}
.voicelabel .wv i:nth-child(5){height:6px;animation-delay:.6s}
@keyframes wv{0%,100%{transform:scaleY(.5)}50%{transform:scaleY(1)}}
/* custom audio player */
.fkplayer{display:flex;align-items:center;gap:13px;background:var(--card-2);border:1px solid var(--line-2);
  border-radius:44px;padding:8px 16px 8px 8px;margin:4px 0 10px}
.fkpp{flex-shrink:0;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;background:var(--gold-btn);
  color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px -8px rgba(111,78,18,.6);
  transition:background .2s var(--ease),transform .1s var(--ease)}
.fkpp:hover{background:var(--gold-btn-d)}
.fkpp:active{transform:scale(.95)}
.fkpp svg{width:20px;height:20px;display:block}
.fkwave{position:relative;flex:1;height:40px;display:flex;align-items:center;gap:2px;cursor:pointer;min-width:60px}
.fkwave .fkbar{flex:1;min-width:2px;height:16%;background:var(--line-2);border-radius:3px;transition:background .12s var(--ease),height .12s var(--ease)}
.fkwave .fkbar.on{background:var(--gold)}
.fkwave:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:6px}
.fktime{flex-shrink:0;font-family:var(--sans);font-size:.82rem;color:var(--soft);font-variant-numeric:tabular-nums;
  letter-spacing:.02em;display:flex;gap:5px;min-width:74px;justify-content:flex-end}
.fktime .fksep{opacity:.5}
.fkaudio{display:none}
/* keepsake QR scanner overlay */
.fkscan{position:fixed;inset:0;z-index:120;background:#08111e;display:flex;flex-direction:column;
  align-items:center;justify-content:center;padding:22px}
.fkscan-card{position:relative;width:100%;max-width:440px;aspect-ratio:1/1;border-radius:18px;overflow:hidden;
  background:#000;box-shadow:0 24px 60px -20px rgba(0,0,0,.8)}
.fkscan-card video{width:100%;height:100%;object-fit:cover;display:block}
.fkscan-reticle{position:absolute;inset:15%;border:3px solid rgba(217,182,122,.92);border-radius:16px;pointer-events:none}
.fkscan-msg{color:#eaf0f7;font-family:var(--sans);font-size:1rem;margin-top:18px;text-align:center;max-width:24rem;line-height:1.5}
/* custom video player */
.fkvid{position:relative;border-radius:12px;overflow:hidden;background:#0b1a2e;margin:4px 0 8px}
.fkvid video{width:100%;display:block;max-height:62vh;background:#0b1a2e}
.fkvid-big{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(8,17,30,.28);transition:opacity .25s var(--ease)}
.fkvid.playing .fkvid-big{opacity:0;pointer-events:none}
.fkvid-big span{width:66px;height:66px;border-radius:50%;background:rgba(138,98,24,.94);display:flex;
  align-items:center;justify-content:center;box-shadow:0 12px 34px -8px rgba(0,0,0,.65)}
.fkvid-big svg{width:26px;height:26px;color:#fff;margin-left:3px;display:block}
.fkvid-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:11px;padding:11px 13px;
  background:linear-gradient(0deg,rgba(8,17,30,.9),rgba(8,17,30,0));opacity:0;transition:opacity .25s var(--ease)}
.fkvid:hover .fkvid-bar,.fkvid.playing .fkvid-bar,.fkvid.paused .fkvid-bar{opacity:1}
.fkvid-pp,.fkvid-fs{background:none;border:none;color:#fff;cursor:pointer;padding:0;display:flex;flex-shrink:0}
.fkvid-pp svg{width:22px;height:22px;display:block}
.fkvid-fs svg{width:20px;height:20px;display:block}
.fkvid-track{flex:1;height:6px;background:rgba(255,255,255,.3);border-radius:4px;cursor:pointer;position:relative}
.fkvid-fill{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--gold-l);border-radius:4px}
.fkvid-time{color:#fff;font-family:var(--sans);font-size:.76rem;font-variant-numeric:tabular-nums;flex-shrink:0;letter-spacing:.02em}
.fkvid-track:focus-visible{outline:2px solid var(--gold-l);outline-offset:3px}

/* ---------- timeline (public) ---------- */
.tlfilter{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 26px}
.tlchip{border:1.5px solid var(--line-2);background:var(--card);color:var(--soft);border-radius:30px;
  padding:8px 16px;font-family:var(--sans);font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s var(--ease)}
.tlchip:hover{border-color:var(--gold)}
.tlchip.on{border-color:var(--gold-btn);color:#fff;background:var(--gold-btn)}
.tlwrap{position:relative;padding-left:34px}
.tlwrap::before{content:'';position:absolute;left:11px;top:8px;bottom:8px;width:2px;
  background:linear-gradient(180deg,var(--gold-l),var(--line-2))}
.tlera{position:relative;font-family:var(--sans);font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--navy);font-size:.86rem;margin:34px 0 10px;cursor:pointer;display:flex;align-items:center;gap:8px}
.tlera .cx{color:var(--gold-d);transition:transform .25s var(--ease);display:inline-block}
.tlera.closed .cx{transform:rotate(-90deg)}
.tlyear{position:relative;font-weight:400;color:var(--gold-d);font-size:1.5rem;margin:24px 0 14px}
.tlyear::before{content:'';position:absolute;left:-29px;top:.42em;width:14px;height:14px;border-radius:50%;
  background:var(--gold);border:3px solid var(--bg);box-shadow:0 0 0 2px rgba(182,137,75,.3)}
.tlitem{position:relative;margin-bottom:18px}
.tlitem::before{content:'';position:absolute;left:-27px;top:10px;width:10px;height:10px;border-radius:50%;
  background:var(--card);border:2px solid var(--gold)}
.tlitem .mem{margin-bottom:0}
.tldate{font-family:var(--sans);font-size:.82rem;letter-spacing:.04em;color:var(--soft);margin-bottom:8px;text-transform:uppercase}

/* motion: gentle fade-up for cards */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.reveal{animation:fadeUp .7s var(--ease) both}
.reveal:nth-child(2){animation-delay:.05s}
.reveal:nth-child(3){animation-delay:.1s}
.reveal:nth-child(4){animation-delay:.15s}
.reveal:nth-child(5){animation-delay:.2s}
.reveal:nth-child(6){animation-delay:.25s}

/* review actionbar (SPA) */
.actionbar{position:sticky;top:0;z-index:20;background:rgba(244,239,228,.92);backdrop-filter:blur(8px);
  padding:14px 0 12px;margin-bottom:16px;border-bottom:1px solid var(--line);display:flex;
  flex-direction:column;align-items:center;gap:10px}
.actionrow{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.menupanel{display:grid;grid-template-columns:1fr 1fr;gap:5px;width:100%;max-width:30rem;
  background:var(--card);border:1px solid var(--line);border-radius:16px;padding:9px;margin-top:10px;box-shadow:var(--shadow)}
.menuitem{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:11px;border:none;background:transparent;
  cursor:pointer;font-family:var(--sans);font-weight:600;font-size:.9rem;color:var(--ink);text-align:left;text-decoration:none;
  width:100%;transition:background .15s var(--ease)}
.menuitem:hover{background:var(--bg-2)}
.menuitem .mi{width:19px;height:19px;flex-shrink:0;color:var(--gold-ink);display:inline-flex;align-items:center;justify-content:center}
.menuitem .mi svg{width:19px;height:19px;display:block}
.menuitem.wide{grid-column:1 / -1}
.menuitem.danger{color:var(--danger)}.menuitem.danger .mi{color:var(--danger)}
@media(max-width:520px){.menupanel{grid-template-columns:1fr}.menuitem.wide{grid-column:auto}}

/* QR download split-button */
.dlwrap{display:flex;width:100%;max-width:26rem;margin-top:14px}
.dlwrap .dlmain{flex:1;border-top-right-radius:0;border-bottom-right-radius:0}
.dlwrap .dlcaret{width:54px;min-width:54px;padding:0;border-top-left-radius:0;border-bottom-left-radius:0;
  border-left:1px solid rgba(255,255,255,.3);font-size:1.1rem}
.dlmenu{display:flex;flex-direction:column;gap:4px;width:100%;max-width:26rem;margin-top:8px;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow-sm)}
.dlmenu .btn.ghost{width:100%;justify-content:flex-start;text-align:left}

/* lightbox for images */
.lbx{position:fixed;inset:0;z-index:80;background:rgba(8,17,30,.92);display:flex;align-items:center;
  justify-content:center;padding:20px;cursor:zoom-out}
.lbx img{max-width:96vw;max-height:92vh;border-radius:10px;box-shadow:0 30px 80px -20px rgba(0,0,0,.8)}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/*homelink*/
.brand,.wm,.fkmark,.mark{cursor:pointer}
.brand:hover,.fkmark:hover,.mark:hover{opacity:.85;transition:opacity .15s}

/* family & access */
.fk-roleguide{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:14px 16px;margin:6px 0 18px}
.fk-roleguide p{margin:.3rem 0;font-size:.95rem;line-height:1.45}
.fk-h{margin:20px 0 10px;width:100%;font-size:1.05rem}
.fk-invite,.fk-mrow{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:14px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px;width:100%;box-sizing:border-box}
.fk-invite input[type=email],.fk-invite select,.fk-mrow select{background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:10px;padding:10px 12px;font:inherit;width:100%;box-sizing:border-box}
.fk-invite label,.fk-mrow label{display:flex;align-items:center;gap:8px;font-size:.95rem}
.fk-ck{flex-direction:row!important;align-items:center}
.fk-ck input{width:auto}
.fk-mtop{display:flex;align-items:center;gap:8px;font-weight:600;flex-wrap:wrap}
.fk-mbtns{display:flex;gap:8px;flex-wrap:wrap}
.fk-pill{font-size:.72rem;padding:2px 9px;border-radius:999px;background:rgba(182,137,75,.25);color:#e9d3ad;font-weight:600}
.readonly-note{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:12px 16px;font-size:.95rem;line-height:1.45;text-align:center}

/* pending suggestions */
.fk-pending{width:100%;background:rgba(182,137,75,.10);border:1px solid rgba(182,137,75,.30);border-radius:16px;padding:14px 16px;margin:4px 0 18px}
.fk-pending h3{margin:2px 0 10px}
.fk-pcard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:12px;padding:12px 14px;margin-bottom:10px;text-align:left}
.fk-pcard h4{margin:0 0 4px;font-size:1.02rem}
.fk-pcard img,.fk-pcard video{max-width:100%;border-radius:10px;margin:8px 0}
.fk-pcard audio{width:100%;margin:8px 0}
.fk-pmeta{display:inline-block;font-size:.8rem;opacity:.75;margin-bottom:6px}

/* future messages */
.fk-rcard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:14px 16px;margin-bottom:12px;text-align:left}
.fk-rcard.sealed{background:rgba(182,137,75,.10);border-color:rgba(182,137,75,.30)}
.fk-rtop{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:1.05rem}
.fk-rw{font-style:italic;opacity:.85;margin:8px 0}
.fk-rcard img,.fk-rcard video{max-width:100%;border-radius:10px;margin:8px 0}
.fk-rcard audio{width:100%;margin:8px 0}
.fk-pill.rel{background:rgba(120,170,120,.25);color:#cfe6cf}
.fk-l{display:block;margin:10px 0;font-size:.95rem}
.fk-l input[type=text],.fk-l input[type=email],.fk-l input[type=date],.fk-l input:not([type]),.fk-l textarea{display:block;width:100%;box-sizing:border-box;margin-top:6px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:10px;padding:10px 12px;font:inherit}
.fk-l textarea{min-height:90px}
.fk-lt{display:block;font-weight:600;margin-bottom:6px}
.fk-r{display:flex;align-items:flex-start;gap:8px;margin:5px 0;font-weight:400}
.fk-r input{margin-top:3px;width:auto}

/* well wishes */
.wishwall{background:rgba(255,255,255,.03);border-top:1px solid rgba(255,255,255,.08);padding:30px 0 10px;margin-top:20px}
.wishh{text-align:center;margin-bottom:6px}
.wishform{display:flex;flex-direction:column;gap:10px;max-width:34rem;margin:14px auto 24px}
.wishform input,.wishform textarea{background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:10px;padding:10px 12px;font:inherit;width:100%;box-sizing:border-box}
.wishform textarea{min-height:90px}
.wmsg{font-size:.9rem;opacity:.85;text-align:center;min-height:1em}
.wishlist{max-width:40rem;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.wishcard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:12px;padding:12px 14px;text-align:left}
.wishmeta{font-weight:600;margin-bottom:4px}
.wishbody{white-space:pre-wrap;line-height:1.5}

/* follow */
.followbar{padding:18px 0;border-top:1px solid rgba(255,255,255,.08)}
.followform{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;align-items:center;max-width:34rem;margin:0 auto}
.followform input{background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:10px;padding:10px 12px;font:inherit;flex:1;min-width:180px}
.fmsg{font-size:.85rem;opacity:.85;flex-basis:100%;text-align:center}

/* onboarding family */
.famrow{display:flex;flex-direction:column;gap:8px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:12px;padding:12px;margin-bottom:10px}
.famrow input{background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:9px;padding:9px 11px;font:inherit;width:100%;box-sizing:border-box}

/* how-to guide */
.guidesteps{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.gstep{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:12px;padding:12px 14px}
.gstep h3{margin:0 0 4px}
.faq{border-bottom:1px solid rgba(255,255,255,.08)}
.faqq{width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;padding:12px 0;display:flex;justify-content:space-between;align-items:center;cursor:pointer;gap:12px}
.faqx{opacity:.7;font-size:1.3rem;line-height:1}
.faqa{padding:0 0 12px;opacity:.9;line-height:1.5}

/* legacy / memorial */
.pdates{opacity:.85;margin-top:4px;font-size:1.05rem;letter-spacing:.03em}
.memoriam{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:18px 20px;margin:0 0 20px}
.memoriam h2{margin:0 0 10px}
.memoriam h3{margin:14px 0 4px;font-size:1rem}
.memoriam .obit{line-height:1.6;white-space:pre-wrap}
.memoriam a{color:var(--gold-ink)}

/* public find */
.findbox{max-width:34rem;margin:0 auto 20px}
.findbox input{width:100%;box-sizing:border-box;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.16);color:inherit;border-radius:12px;padding:13px 16px;font:inherit;font-size:1.05rem}
.findresults{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;max-width:60rem;margin:0 auto}
.findcard{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:14px;padding:12px;text-decoration:none;color:inherit}
.findcard:hover{border-color:var(--gold-ink)}
.findimg{width:52px;height:52px;border-radius:50%;object-fit:cover;flex-shrink:0}
.findimg.mono{display:flex;align-items:center;justify-content:center;background:rgba(182,137,75,.25);color:#e9d3ad;font-weight:600;font-size:1.3rem}
.findname{font-weight:600}
.findyears{opacity:.75;font-size:.9rem}

/* admin impersonation banner */
.adminbar{background:rgba(182,137,75,.22);border:1px solid rgba(182,137,75,.45);color:#e9d3ad;border-radius:12px;padding:10px 14px;margin:0 0 14px;font-size:.92rem;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;text-align:center}
.adminbar .btn{padding:6px 12px;min-height:auto;font-size:.85rem}

/* ===== Turn 4: display typography + gentle motion ===== */
:root{--display:"Hoefler Text","Big Caslon","Playfair Display","Palatino Linotype",Georgia,serif}
h1,.cover h1,.q,.mem h3,.phead h1{font-family:var(--display)}
h1,.cover h1{letter-spacing:0}
.mem h3{letter-spacing:0;font-size:1.28rem}
.bio::first-letter{float:left;font-family:var(--display);font-size:3.4rem;line-height:.82;font-weight:400;color:var(--gold-d);padding:6px 12px 0 2px}
@keyframes fkFade{from{opacity:0}to{opacity:1}}
@keyframes fkRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
#app>.screen,#app>.profile{animation:fkFade .5s var(--ease) both}
.profile .bio{animation:fkFade .6s var(--ease) both;animation-delay:.06s}
.profile .mem{animation:fkRise .55s var(--ease) both}
.profile .mem:nth-of-type(1){animation-delay:.03s}
.profile .mem:nth-of-type(2){animation-delay:.09s}
.profile .mem:nth-of-type(3){animation-delay:.15s}
.profile .mem:nth-of-type(4){animation-delay:.21s}
.profile .mem:nth-of-type(5){animation-delay:.27s}
.profile .mem:nth-of-type(6){animation-delay:.33s}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
