@font-face{font-family:Cormorant;src:url(assets/cormorant.ttf) format('truetype');font-display:swap}@font-face{font-family:Inter;src:url(assets/inter.ttf) format('truetype');font-display:swap}
:root{--night:#101f25;--ivory:#e6dfca;--muted:#bac7c7;--paper:#d8c7a5;--ink:#222922;--rule:#938670;--serif:Cormorant,Georgia,serif;--sans:Inter,Arial,sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--night);color:var(--ivory);font-family:var(--sans)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;background:none;border:1px solid #a9b7b44d;min-height:44px;padding:10px 15px;transition:background .18s,border-color .18s}button:hover{background:#d4dcc915;border-color:#c8d1bd}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid #d7bb7a;outline-offset:4px}button:disabled{opacity:.45;cursor:default}button[aria-pressed=true]{border-color:#b4bb96;color:#e5e4be}a{color:inherit;text-underline-offset:4px}::selection{background:#b4bc9f;color:#152027}#experience,#scene{position:absolute;inset:0}#scene{touch-action:none;outline:none}#scene canvas{display:block;width:100%;height:100%}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 130px 30px #02080988;background:linear-gradient(180deg,#07111599,transparent 25%,transparent 68%,#071115bb)}header{position:absolute;top:28px;left:38px;right:38px;display:flex;justify-content:space-between;align-items:flex-start;gap:28px;pointer-events:none}.identity,header nav{pointer-events:auto}h1{font:400 clamp(34px,3.2vw,50px)/1 var(--serif);margin:0;letter-spacing:-.025em;text-shadow:0 3px 16px #000}header p{font:400 18px/1.3 var(--serif);margin:9px 0 0;color:#d0d8cd}header nav{display:flex;gap:10px;padding-top:4px}header nav button{background:#0a151bb3;font:400 17px var(--serif);border-color:#b5bba473}#registerToggle span{font:11px var(--sans);margin-left:9px;color:#b7c4bd}.invitation{position:absolute;left:42px;bottom:145px;max-width:320px;text-shadow:0 3px 16px #000;transition:opacity .5s,transform .6s}.invitation h2{font:400 36px/1.04 var(--serif);margin:0 0 14px}.invitation p{color:#cbd3cd;font-size:12px;line-height:1.8}.enter{margin-top:8px;border:0;border-bottom:1px solid #b7b8a8;padding:10px 0;font:22px var(--serif);display:flex;align-items:center;gap:28px}.enter svg{width:30px;stroke:currentColor;fill:none;stroke-width:1}.invitation.departed{opacity:0;transform:translateY(15px);pointer-events:none}.ground-controls{position:absolute;bottom:25px;left:38px;right:38px;display:flex;justify-content:space-between;align-items:flex-end;gap:18px;font-size:11px;pointer-events:none}.ground-controls>div{pointer-events:auto}.keeper{display:flex;flex-direction:column;gap:8px;min-width:140px}.keeper span{color:#ccd4c5;letter-spacing:.07em}.keeper button{border:0;padding:0;min-height:28px;text-align:left;color:#aabcb9;font-size:11px}.movement{text-align:center}.movement p{font:16px var(--serif);letter-spacing:.04em;color:#d3d9cd;margin:0 0 10px}.movement>div{display:flex;justify-content:center;gap:8px}.movement button{font-size:11px;padding:9px 12px;min-height:36px;background:#10202799}.compass{display:grid;grid-template-columns:repeat(4,36px);gap:3px}.compass button{padding:0;font:22px var(--serif);min-height:36px;background:#10202799}#loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#101f25;z-index:15;transition:opacity .6s}#loading p{font:32px var(--serif);margin:0 0 10px}#loading small{font-size:12px;color:var(--muted)}#loading.loaded{opacity:0;pointer-events:none}#graveHint{position:absolute;transform:translate(-50%,-100%);padding:9px 15px 12px;background:#101c22eb;border:1px solid #c5ccb467;pointer-events:none;text-align:center;box-shadow:0 8px 24px #0005}#graveHint span{font:24px var(--serif);display:block;white-space:nowrap}#graveHint small{display:block;margin-top:5px;font-size:11px;color:#b8c6bd}#obituary{position:absolute;right:30px;top:130px;bottom:108px;width:min(380px,35vw);overflow:auto;color:var(--ink);padding:22px 28px 16px;background-color:var(--paper);background-image:linear-gradient(110deg,#ece0c7a6,#d4bf98b0),url(assets/stone.jpg);background-size:auto,600px;box-shadow:0 16px 50px #0006;border:1px solid #b2a080;scrollbar-color:#786d58 #cebd9e;scrollbar-width:thin}.paper-top{display:flex;justify-content:space-between;align-items:center;color:#575743;font-size:11px;letter-spacing:.09em}.paper-top button{border:0;padding:3px 0 3px 10px;min-height:28px;font-size:11px;color:#30382c}.paper-top button span{font-size:22px;margin-left:8px;vertical-align:middle}#obitName{font:400 42px/.98 var(--serif);margin:20px 0 8px;letter-spacing:-.02em}.epitaph{font:italic 19px/1.25 var(--serif);margin:10px 0 21px;color:#4b503d}.death-date{padding:13px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:15px;align-items:center}.death-date span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;max-width:100px;line-height:1.6}.death-date strong{font:400 21px var(--serif);text-align:right}.narrate{width:100%;margin:13px 0 0;border-color:#857963;display:flex;gap:12px;align-items:center;justify-content:center;font:16px var(--serif);min-height:42px}.narrate:hover,#obituary button:hover{background:#303a2012;border-color:#4e5b3e}.narrate svg{height:19px;width:19px;fill:none;stroke:currentColor;stroke-width:1.4}.voice-status{font-size:11px;line-height:1.5;margin:7px 0 0}.voice-status:empty{display:none}#obituary section{margin-top:23px}#obituary h3{font:400 23px var(--serif);margin:0 0 8px}#obituary section p{font:14px/1.75 var(--sans);margin:0 0 10px}#obituary section a{font:14px/1.4 var(--serif);display:block}#obituary small{display:block;color:#5d5c4d;font-size:11px;line-height:1.6;margin-top:5px}.pulse{border-top:1px solid var(--rule);padding-top:20px}.pulse h3{color:#354d34}details{margin-top:24px;font-size:11px;line-height:1.7}summary{cursor:pointer;font-size:11px;color:#414937;min-height:32px}details a{display:block;margin-bottom:8px}.paper-footer{margin-top:20px;padding-top:10px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px}.paper-footer button{color:var(--ink);padding:6px 0;border:0;min-height:35px;font-size:11px}#whisper{position:absolute;left:50%;bottom:155px;transform:translateX(-50%);background:#0c171cf0;color:#e5dbc3;border:1px solid #89948080;padding:16px 24px;font:italic 23px/1.3 var(--serif);max-width:470px;width:max-content;text-align:center;pointer-events:none;box-shadow:0 12px 35px #0006;z-index:7}#register{position:absolute;inset:112px 30px 100px;background:#101e24fa;z-index:9;padding:30px 36px;overflow:auto;border:1px solid #7d96834d;scrollbar-color:#6a7b6e #102027}.register-head{display:flex;justify-content:space-between;gap:24px;align-items:center}.register-head h2{font:40px var(--serif);margin:0}.register-head p{font-size:12px;color:var(--muted)}.register-head button{font:17px var(--serif)}.search-label{display:block;font-size:11px;color:#c6d1c6;margin-top:20px}.search-label input{display:block;width:100%;background:transparent;color:var(--ivory);border:0;border-bottom:1px solid #829481;padding:13px 0;outline-offset:2px;font:22px var(--serif);caret-color:#d7bb7a}.search-label input::placeholder{color:#99aca5}.filters{display:flex;gap:8px;margin:18px 0 16px;flex-wrap:wrap}.filters button{font-size:11px;padding:7px 12px;min-height:34px}.register-row{display:grid;grid-template-columns:1.2fr .7fr 2fr auto;gap:20px;align-items:center;border:0;border-bottom:1px solid #b8c6b829;width:100%;text-align:left;padding:16px 5px;min-height:70px}.register-row .name{font:25px var(--serif)}.register-row .date{font-size:11px;color:#becab9}.register-row .claim{font:15px var(--serif);color:#b5c6bf}.register-row .visit{font-size:11px;color:#e0ce9a}.register-note{font-size:11px;line-height:1.8;color:#b2c3be;max-width:80ch;margin:24px 0}.empty{padding:40px 0;font:24px var(--serif)}dialog{max-width:550px;width:calc(100% - 30px);background:var(--paper);color:var(--ink);padding:35px;border:1px solid #b2a080;box-shadow:0 14px 50px #0009}dialog::backdrop{background:#031017c9}dialog h2{font:40px var(--serif);margin:0 0 15px}dialog p{font-size:13px;line-height:1.75}dialog button{border-color:#716d58;margin-top:10px}.no-script{position:absolute;inset:30%;padding:30px;background:var(--night);z-index:99}body.reading .invitation{display:none}body.reading .movement{margin-right:24vw}body.reading .compass{display:none}[hidden]{display:none!important}
@media(min-width:1600px){#obituary{width:400px;right:42px}.invitation{bottom:170px}}
@media(max-width:1000px){header{left:24px;right:24px;top:22px}h1{font-size:36px}header p{font-size:16px}header nav{gap:6px}header nav button{padding:9px 11px;font-size:15px}#obituary{width:350px;max-width:44vw;right:20px;top:114px;bottom:115px;padding:20px 23px}.invitation{left:26px;max-width:280px}.invitation h2{font-size:32px}.ground-controls{left:24px;right:24px}.compass{display:none}.movement p{font-size:14px}body.reading .movement{margin-right:0}.keeper{min-width:105px}#register{inset:105px 20px 110px;padding:24px}}
@media(max-width:650px){header{top:18px;left:20px;right:20px;display:block}h1{font-size:37px}header p{font-size:15px;margin-top:6px}header nav{padding-top:15px;gap:7px}header nav button{font-size:14px;min-height:38px;padding:8px 11px}#registerToggle span{font-size:11px;margin-left:7px}.vignette{box-shadow:inset 0 0 65px 5px #02080977;background:linear-gradient(180deg,#071115b3,transparent 30%,transparent 68%,#071115cc)}.invitation{left:22px;bottom:148px;max-width:260px}.invitation h2{font-size:31px}.invitation p{font-size:11px}.enter{font-size:20px}.ground-controls{left:18px;right:18px;bottom:17px;display:block}.keeper{flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:8px;min-width:0;font-size:11px}.keeper button{font-size:11px}.movement p{font-size:13px;margin:4px 0 8px}.movement button{font-size:11px;min-height:36px;padding:8px}.movement>div{gap:6px}#obituary{left:12px;right:12px;top:170px;bottom:105px;width:auto;max-width:none;padding:17px 23px;z-index:8}#obitName{font-size:38px;margin-top:14px}#obituary section p{font-size:12px}body.reading .movement p{display:none}body.reading .keeper{display:none}body.reading .ground-controls{bottom:19px}#register{inset:158px 12px 102px;padding:20px 18px}.register-head{align-items:flex-start}.register-head h2{font-size:32px}.register-head p{font-size:11px}.register-head button{max-width:100px;font-size:14px;padding:7px}.filters{gap:5px}.filters button{font-size:11px;min-height:34px;padding:6px 8px}.search-label input{font-size:18px}.register-row{grid-template-columns:1fr auto;gap:7px;padding:13px 2px}.register-row .name{font-size:24px}.register-row .claim{grid-column:1/2;font-size:13px}.register-row .visit{grid-column:2;grid-row:2}.register-row .date{font-size:11px;text-align:right}.register-note{font-size:11px}#whisper{bottom:145px;max-width:calc(100% - 36px);font-size:20px;width:max-content;padding:15px 20px}#graveHint span{font-size:21px}dialog{padding:25px}dialog h2{font-size:35px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Keep the resident visible beside its record. */
@media(min-width:651px){#obituary{width:310px;max-width:34vw;padding:18px 22px;right:20px;top:112px;bottom:106px}#obitName{font-size:36px}#obituary h3{font-size:25px}.epitaph{font-size:18px}}
@media(max-width:650px){#obituary{top:52%;bottom:101px;padding:15px 20px}#obitName{font-size:32px;margin:10px 0}.epitaph{margin:8px 0 14px;font-size:17px}.death-date{padding:10px 0}#obituary h3{font-size:24px}}

.brand-logo{display:block;width:340px;height:92px;object-fit:contain;object-position:left center}header p{margin-top:0}@media(max-width:650px){.brand-logo{width:260px;height:70px}header{top:8px}header nav{padding-top:10px}}
/* A handled sheet: irregular edge, foxed corners, a folded lower tip. */
#obituary{clip-path:polygon(0 1%,3% 0,12% .4%,26% 0,43% .3%,57% 0,74% .4%,90% 0,100% .8%,99.7% 19%,100% 39%,99.5% 66%,100% 85%,99.4% 97%,96% 100%,78% 99.6%,55% 100%,33% 99.5%,12% 100%,.5% 99%,0 81%,.5% 59%,0 38%,.5% 17%);background-image:radial-gradient(ellipse at 0 0,#70502b80,transparent 27%),radial-gradient(ellipse at 100% 100%,#6643276b,transparent 24%),radial-gradient(ellipse at 100% 0,#7a542c4d,transparent 21%),radial-gradient(ellipse at 0 100%,#7d5d3861,transparent 24%),linear-gradient(110deg,#ece0c7c9,#d4bf98bf),url(assets/stone.jpg);background-size:auto,auto,auto,auto,auto,600px;box-shadow:inset 0 0 25px #6b48254d, inset 0 0 3px #50381fab,0 15px 50px #0006}
#obituary::after{content:"";display:block;float:right;width:32px;height:32px;margin:5px -21px -15px 0;background:linear-gradient(135deg,transparent 44%,#92794e 47%,#eee0bf 52%,#c4aa7d 80%);filter:drop-shadow(-2px -2px 2px #4d351f66);pointer-events:none}

#obituary{overflow-x:hidden}
#obituary{clip-path:none;border:0;background-color:transparent;background-image:url(assets/parchment.png);background-size:100% 100%;background-attachment:local;box-shadow:none;padding-left:26px;padding-right:26px}#obituary::after{display:none}
@media(min-width:651px){.invitation{left:50%;transform:translateX(-50%);max-width:260px;text-align:center;bottom:135px}.invitation h2{font-size:31px}.invitation .enter{margin-left:auto;margin-right:auto}.invitation.departed{transform:translate(-50%,15px)}}

.movement>div{flex-wrap:wrap}@media(max-width:650px){.movement>div{gap:5px}.movement button{padding:7px;font-size:10px}#obituary{bottom:137px}}

/* Minimal scene HUD: two discreet disclosures. */
header nav{display:block;padding:0}.hud-disclosure{margin:0;position:relative;pointer-events:auto}.hud-disclosure>summary{list-style:none;min-height:44px;padding:12px 3px;color:var(--ivory);font:16px var(--serif);cursor:pointer;text-shadow:0 1px 4px #000}.hud-disclosure>summary::-webkit-details-marker{display:none}.hud-disclosure>summary::after{content:' +';margin-left:10px;color:#a7b4ad}.hud-disclosure[open]>summary::after{content:' −'}.hud-popover{position:absolute;right:0;top:48px;width:235px;padding:12px;background:#101c20f5;border:1px solid #a3ae9550;box-shadow:0 12px 30px #0005;backdrop-filter:blur(12px)}header .hud-popover button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #94a68e26;background:none;font:16px var(--serif);padding:12px 8px}header .hud-popover button:last-child{border-bottom:0}.ground-controls{align-items:flex-end}.movement{margin-right:0!important;text-align:right}.movement .hud-popover{top:auto;bottom:48px;width:280px;text-align:left}.movement .hud-popover p{font:12px/1.7 var(--sans);margin:0 0 14px;letter-spacing:0}.movement .hud-popover>div{display:grid;grid-template-columns:1fr 1fr;gap:6px}.movement button{font-size:12px}.compass{display:none!important}.paper-top{justify-content:flex-end;min-height:30px}.paper-top button{background:transparent!important;border:0!important;min-height:32px;padding:5px 0 5px 14px;font:14px var(--serif);color:#4b4a39}.paper-top button:hover{text-decoration:underline;text-underline-offset:4px}#obituary{padding-top:34px;padding-left:28px;padding-right:28px}#obitName{margin-top:10px}.record-meta{font:11px/1.5 var(--sans);color:#626047;letter-spacing:.04em;margin-top:22px}.paper-footer{margin-top:10px}
@media(max-width:650px){header{display:flex;align-items:flex-start;gap:6px}header nav{padding:9px 0 0}.brand-logo{width:230px;height:62px}header p{font-size:13px;max-width:240px}.hud-disclosure>summary{font-size:15px}.hud-popover{right:0}.ground-controls{display:flex;align-items:flex-end}.keeper{display:block;margin:0}.keeper span{display:block;margin-bottom:4px}.movement .hud-popover{width:min(280px,calc(100vw - 36px))}#obituary{bottom:85px;top:52%;padding-top:28px}body.reading .keeper{display:block}}

#obituary{background-color:#eee3c8;background-image:url(assets/parchment-clean.png);background-size:100% 100%;background-attachment:scroll;border:1px solid #c6b590;padding:24px 28px;color:#232a23}.paper-top button{color:#353b2e}.record-meta{color:#4e5546}
/* HUD dropdowns must clear the obituary and register layers. */
header{z-index:20}.ground-controls{z-index:20}.hud-popover{z-index:21}

#recordedSample{margin:18px 0;border-top:1px solid #938670;padding-top:13px}#recordedSample p{font:12px/1.4 var(--sans);margin-bottom:10px}#recordedAudio{display:block;width:100%;height:36px}

.language-picker{display:block;padding:7px 8px 13px;border-bottom:1px solid #94a68e26}.language-picker span{display:block;font:11px/1.4 var(--sans);color:#c4cfbc;margin-bottom:8px}.language-picker select{width:100%;min-height:40px;border:1px solid #839078;background:#17272a;color:var(--ivory);padding:7px;font:14px var(--serif)}.source-language{font-size:11px!important;color:#515a46}html[lang=fr] .movement .hud-popover,html[lang=pt-BR] .movement .hud-popover{width:min(330px,calc(100vw - 36px))}html[lang=fr] .identity p,html[lang=pt-BR] .identity p{max-width:350px}#obituary h3{overflow-wrap:break-word}
#obituary #narrate[aria-pressed=true]{color:#263723;background:#3040210d;border-color:#627052}

/* Center the mobile entrance while keeping reading panels left aligned. */
@media(max-width:650px){
  header{display:flex;flex-direction:column;align-items:center;left:18px;right:18px;gap:2px;text-align:center}
  .identity{width:100%}
  .brand-logo{width:min(260px,100%);height:70px;margin-inline:auto;object-position:center}
  header p,html[lang=fr] header p,html[lang=pt-BR] header p{max-width:320px;margin:2px auto 0;text-align:center}
  header nav{padding:0;align-self:center}
  header .hud-popover{right:50%;transform:translateX(50%);text-align:left}
  .invitation{left:20px;right:20px;max-width:350px;margin-inline:auto;bottom:148px;text-align:center}
  .invitation h2{font-size:31px;text-wrap:balance}
  .invitation p{max-width:310px;margin-inline:auto;text-wrap:pretty}
  .invitation .enter{margin-inline:auto;justify-content:center;gap:16px;font-size:20px}
  .ground-controls{justify-content:center;gap:20px}
  .keeper{text-align:center}
  .keeper button{text-align:center}
}

.creator-credit{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);z-index:19;text-align:center;font:10px/1.5 var(--sans);color:#b8c4bd;width:max-content;max-width:95vw}.creator-credit a{text-decoration:none}.creator-credit a:hover{text-decoration:underline}.creator-links{display:inline-flex;gap:12px;margin-left:12px}.ground-controls{bottom:48px}
@media(max-width:650px){.creator-credit{bottom:5px;font-size:9px;width:95vw}.creator-links{display:flex;justify-content:center;margin-left:0}.ground-controls,body.reading .ground-controls{bottom:49px}#obituary{bottom:116px}.invitation{bottom:175px}}
