/* Gentle motion for a family memorial; all effects respect reduced motion. */
.reading-progress{position:fixed;inset:0 0 auto;height:3px;background:linear-gradient(90deg,#aa8860,#d8c6a3);transform:scaleX(0);transform-origin:left;z-index:30;pointer-events:none}
.textile{background:linear-gradient(#252d610d,#252d610d),url('assets/ndop.jpg') center/cover}
.portrait-frame img{object-fit:cover;object-position:center center}
.gallery-actions{display:flex;justify-content:center;margin-top:28px}
.gallery-actions .button{border-color:#a8adab;gap:24px}
.gallery .photo img{object-position:center 30%}
.photo-open{overflow:hidden}
#lightbox{width:min(900px,92vw);padding:18px;overflow:auto}
.lightbox-stage{position:relative;display:grid;place-items:center;height:min(68dvh,640px);min-height:160px;touch-action:pan-y pinch-zoom;background:#eeefe9;overflow:hidden}
#lightbox .lightbox-stage img{position:absolute;inset:0;display:block;margin:0;width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;object-fit:contain;object-position:center;user-select:none}
#lightbox .close-dialog{z-index:3;right:24px;top:24px}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:52px;border:1px solid #ffffff50;border-radius:4px;background:#252d61e8;color:white;font-family:Georgia,serif;font-size:38px;line-height:1;box-shadow:0 3px 12px #0002;transition:background .2s ease,box-shadow .2s ease}
.lightbox-nav:hover{background:#414b88;box-shadow:0 4px 18px #0003}
.lightbox-prev{left:10px}.lightbox-next{right:10px}
.lightbox-info{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:14px}
#lightbox .lightbox-caption{margin:0;font-size:13px;line-height:1.5}
.lightbox-counter{font-size:11px;white-space:nowrap;color:#7a7f89;font-variant-numeric:tabular-nums}
.lightbox-help{margin-top:8px;color:#8a8e91;font-size:9px;line-height:1.6}
@media(max-width:720px){#lightbox{padding:10px;width:94vw;max-width:94vw;max-height:94dvh}.lightbox-stage{height:min(65dvh,600px)}#lightbox .close-dialog{right:16px;top:16px;width:32px;height:32px}.lightbox-nav{width:36px;height:46px;font-size:32px}.lightbox-prev{left:6px}.lightbox-next{right:6px}#lightbox .lightbox-caption{font-size:11px}.lightbox-info{padding:12px 3px 0}.lightbox-help{padding:0 3px;font-size:8px}}
.button{transition:transform .3s ease,background .3s ease,box-shadow .3s ease,border-color .3s ease}
.button:hover{transform:translateY(-3px);box-shadow:0 8px 20px #19214315}
.button:active{transform:translateY(0);box-shadow:none}
nav a:not(.nav-cta),.text-link{position:relative}
nav a:not(.nav-cta)::after,.text-link::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
nav a:not(.nav-cta):hover::after,.text-link:hover::after{transform:scaleX(1)}
.button>span,.text-link>span,.nav-cta>span{display:inline-block;transition:transform .3s ease}
.button:hover>span,.text-link:hover>span,.nav-cta:hover>span{transform:translate(3px,-2px)}
.photo img{transition:transform .8s cubic-bezier(.2,.7,.25,1),filter .8s ease}
.photo:hover img{transform:scale(1.055);filter:brightness(1.04)}
.photo>span{transition:transform .4s ease}
.photo:hover>span{transform:translateY(-4px)}
.map{transition:box-shadow .4s ease,transform .4s ease}
.map:hover{transform:translateY(-4px);box-shadow:0 15px 35px #252d6110}
@media(prefers-reduced-motion:no-preference){
  .motion-enabled .reveal{opacity:0;transform:translateY(22px);transition:opacity .85s ease var(--reveal-delay,0ms),transform .85s cubic-bezier(.2,.7,.25,1) var(--reveal-delay,0ms)}
  .motion-enabled .reveal.is-visible,.motion-enabled .reveal:focus-within{opacity:1;transform:translateY(0)}
  .motion-enabled .portrait-label{animation:label-drift 5s ease-in-out 3}
  .motion-enabled .portrait-frame img{animation:portrait-arrive 1.6s cubic-bezier(.2,.7,.25,1) both}
  .motion-enabled dialog[open]{animation:dialog-arrive .3s ease-out both}
  .motion-enabled dialog[open]::backdrop{animation:backdrop-arrive .3s ease-out both}
  @media(max-width:720px){nav.open{animation:menu-arrive .25s ease-out both}}
}
@keyframes label-drift{0%,100%{transform:translateY(18px)}50%{transform:translateY(12px)}}
@keyframes portrait-arrive{from{opacity:0;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}
@keyframes dialog-arrive{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-arrive{from{opacity:0}to{opacity:1}}
@keyframes menu-arrive{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.schedule article{position:relative;isolation:isolate}
.schedule article::before{content:'';position:absolute;inset:0 -16px;border-radius:4px;border-left:2px solid #d9c69f;background:linear-gradient(100deg,#ffffff12,#ffffff03);opacity:0;transform:scaleX(.97);transform-origin:left;z-index:-1;transition:opacity .3s ease,transform .4s ease}
.schedule .day strong,.schedule h3,.schedule .day span{transition:color .3s ease,transform .35s ease}
.schedule .times li{transition:background .25s ease,color .25s ease,padding .3s ease;border-radius:3px}
@media(hover:hover){
  .schedule article:hover::before{opacity:1;transform:scaleX(1)}
  .schedule article:hover .day strong{color:#e4d1a9;transform:translateY(-3px) scale(1.06)}
  .schedule article:hover h3{color:#e4d1a9;transform:translateX(4px)}
  .schedule .times li:hover{background:#ffffff0d;color:white;padding-left:5px}
}
.schedule article:focus-within::before,.schedule article:active::before{opacity:1;transform:scaleX(1)}
.brand-mark{width:52px;flex-shrink:0;letter-spacing:.3px;font-size:20px}
.closing-symbol{width:68px;letter-spacing:1px;font-size:22px}
@media(max-width:720px){.brand-mark{width:42px;font-size:16px;letter-spacing:0}}
.closing-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:25px;padding:0 20px}
.closing .closing-actions .button{margin-top:0;min-width:220px}
.closing .primary{border-color:var(--ink)}
.directions-link{margin:12px 0 18px}
.location .destination-note{font-size:10px!important;line-height:1.7;padding-left:12px;border-left:2px solid #b3a381;color:#7a7f86}
.access-map{min-width:0;background:#fff;border:1px solid #e0e1da;box-shadow:0 12px 35px #252d6106}
.map-tabs{display:flex;border-bottom:1px solid var(--line)}
.map-tabs button{flex:1;position:relative;border:0;background:#f0f1eb;padding:16px 10px;font-size:11px;color:#7b8090;transition:background .25s ease,color .25s ease}
.map-tabs button[aria-selected=true]{color:var(--ink);background:white}
.map-tabs button[aria-selected=true]::after{content:'';height:2px;position:absolute;bottom:-1px;left:18px;right:18px;background:var(--gold)}
.map-tabs button:hover{color:var(--ink);background:#e8ebe0}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;gap:8px;border-bottom:1px solid #eee}
.map-toolbar>span{font-size:8px;letter-spacing:1.6px;color:#858977}
.map-toolbar>div{display:flex;align-items:center;gap:7px}
.map-toolbar button{width:30px;height:30px;padding:0;border:1px solid #daddd1;background:#fafaf7;font-size:18px;line-height:1}
.map-toolbar button:hover:not(:disabled){background:var(--ink);color:white;border-color:var(--ink)}
.map-toolbar button:disabled{opacity:.35;cursor:default}
.map-toolbar output{font-size:10px;min-width:43px;text-align:center;font-variant-numeric:tabular-nums}
.plan-viewport{height:430px;overflow:auto;background:#f7f8f5;overscroll-behavior:contain;cursor:grab;scrollbar-width:thin;scrollbar-color:#9ba192 #ecede7}
.plan-viewport.is-dragging{cursor:grabbing;user-select:none}
.plan-canvas{display:grid;place-items:center;min-width:100%;min-height:100%;width:max-content;padding:20px}
.plan-canvas img{height:calc(380px * var(--plan-scale,1));max-width:none;width:auto;pointer-events:none;user-select:none}
.map-help{padding:12px 18px;margin:0;font-size:9px;line-height:1.7;color:#7c827a;border-top:1px solid #e8eae2}
#google-map{width:100%;height:430px;display:block;border:0;background:#eeefe9}
.map-external{margin:0 18px 15px}
[hidden]{display:none!important}
@media(max-width:720px){.schedule article::before{inset:0 -9px}.map-toolbar{padding:12px}.map-toolbar>span{letter-spacing:1px;font-size:7px}.map-tabs button{font-size:10px}.closing-actions{flex-direction:column;align-items:center}.closing .closing-actions .button{width:min(100%,280px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1!important;transform:none!important}.button:hover,.map:hover,.photo:hover img,.photo:hover>span,.button:hover>span,.text-link:hover>span,.nav-cta:hover>span,.schedule article:hover .day strong,.schedule article:hover h3{transform:none}}
