/* A responsive world, with no idle animation loop or blocked pointer events. */
.pointer-garden { display:none; position:fixed; inset:0; pointer-events:none; z-index:1000; overflow:hidden; color:var(--coral-dark); }
.pointer-garden * { position:absolute; pointer-events:none; }
.pointer-dot { width:6px; height:6px; left:-3px; top:-3px; background:var(--ink); border-radius:50%; }
.pointer-halo { width:34px; height:34px; left:-17px; top:-17px; border:1px solid var(--coral-dark); border-radius:45% 55% 50% 50%; background:transparent; }
.pointer-label { position:static; display:grid; place-items:center; height:100%; font-style:normal; font-size:12px; line-height:1; opacity:0; transition:opacity .16s ease; }
.pointer-leaf { width:6px; height:10px; border-radius:1px 8px 1px 8px; background:var(--coral-dark); opacity:0; }
.pointer-ripple { width:35px; height:35px; border:1px solid var(--coral-dark); border-radius:50%; opacity:0; }
.pointer-garden.over-link .pointer-halo { background:var(--white); border-style:dashed; }
.pointer-garden.over-link .pointer-dot { opacity:0; }
.pointer-garden.over-link .pointer-label { opacity:1; }
.pointer-garden.over-text .pointer-halo { border-radius:6px; width:20px; left:-10px; }
@media(any-hover:hover) and (any-pointer:fine) and (prefers-reduced-motion:no-preference) {
 html.pointer-ready, .pointer-ready body, .pointer-ready a, .pointer-ready button { cursor:none; }
 .pointer-ready input,.pointer-ready textarea,.pointer-ready [contenteditable] { cursor:text; }
 .pointer-ready .pointer-garden { display:block; }
 /* Independent transform properties compose with the existing reveal animations. */
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box) {
   rotate:1 0 0 calc(var(--py,0) * -3deg);
   translate:0 var(--lift,0px);
   transform-style:preserve-3d;
   transition:translate .3s cubic-bezier(.2,.8,.2,1),rotate .25s ease,box-shadow .3s ease;
 }
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box).pointer-over { --lift:-6px; box-shadow:0 20px 45px #34483720; }
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box):hover { transform:none; }
 .portal-symbol { translate:calc(var(--px,0)*12px) calc(var(--py,0)*8px); rotate:calc(var(--px,0)*12deg); transition:translate .18s ease,rotate .18s ease; }
 .portal.pointer-over .portal-symbol { scale:1.12; }
 .portal-symbol { transition:translate .18s ease,rotate .18s ease,scale .3s ease; }
 .portal-index b,.travel-version > span,.creation-card > span { translate:calc(var(--px,0)*5px) 0; transition:translate .25s ease; }
 .fact-number { translate:calc(var(--px,0)*7px) calc(var(--py,0)*4px); rotate:calc(var(--px,0)*3deg); transition:translate .2s ease,rotate .2s ease; }
 .moment-shape { translate:calc(var(--px,0)*16px) calc(var(--py,0)*12px); transition:translate .25s ease; }
 .moment-label { translate:calc(var(--px,0)*-4px) calc(var(--py,0)*-3px); transition:translate .25s ease; }
 .travel-photo img { translate:calc(var(--px,0)*7px) calc(var(--py,0)*5px); scale:1.04; }
 .travel-photo:hover img { transform:none; }
 .world-landscape .world-map { translate:var(--scene-x,0px) var(--scene-y,0px); scale:1.025; transition:translate .18s ease; }
 .world-heading h1,.hero-text h1 { translate:var(--scene-x,0px) var(--scene-y,0px); transition:translate .18s ease; }
 .world-heading h1 em { display:inline-block; rotate:calc(var(--px,0)*-2deg); transition:rotate .2s ease; }
 :is(.map-node,.button,.theme-picker button,.nav-toggle,.brand,.nav-links a,.contact-links a,.daily-link,.world-scroll) {
   translate:var(--sx,0px) var(--sy,0px);
   transition:translate .2s cubic-bezier(.2,.8,.2,1),background-color .2s ease,box-shadow .2s ease,color .2s ease;
 }
 .map-node .node-icon { rotate:calc(var(--px,0)*18deg); scale:1; transition:rotate .25s ease,scale .25s ease; }
 .map-node.pointer-over .node-icon { scale:1.15; background:#dfc294; }
 .map-node:hover { box-shadow:5px 9px 0 #3f553f1c; }
 .button:hover { transform:none; }
 .button.pointer-over { box-shadow:0 10px 20px #34483725; }
 .brand.pointer-over .brand-mark { rotate:35deg; }
 .brand-mark { transition:rotate .3s ease; }
 .world-scroll span { translate:0 0; transition:translate .25s ease; }
 .world-scroll:hover span { translate:0 5px; }
 h2 { transition:color .25s ease,translate .25s ease; }
 h2:hover { color:var(--coral-dark); translate:3px 0; }
 h3,p,blockquote,.kicker,.eyebrow,.world-eyebrow { transition:translate .25s ease,color .25s ease; }
 h3:hover,p:hover,blockquote:hover,.kicker:hover,.eyebrow:hover,.world-eyebrow:hover { translate:0 -2px; }
 .section-intro:hover,.hero-copy:hover,.world-lede:hover { color:var(--ink); }
 .signature:hover { color:var(--coral-dark); }
 .love-card .card-visual { translate:calc(var(--px,0)*8px) calc(var(--py,0)*6px); transition:translate .25s ease; }
 .portrait-art { translate:calc(var(--px,0)*8px) calc(var(--py,0)*6px); transition:translate .25s ease; }
 .mini-note { translate:calc(var(--px,0)*-8px) calc(var(--py,0)*-5px); transition:translate .25s ease; }
}
/* Touch still gets immediate press feedback, never a mouse trail. */
@media(hover:none) and (prefers-reduced-motion:no-preference) {
 a:active,button:active { scale:.98; transition:scale .12s ease; }
}
@media(prefers-reduced-motion:reduce) {
 .pointer-garden { display:none !important; }
 html.pointer-ready,.pointer-ready body { cursor:auto; }
 .pointer-ready a,.pointer-ready button { cursor:pointer; }
}
@media print { .pointer-garden { display:none !important; } }
@media(any-hover:hover) and (any-pointer:fine) and (prefers-reduced-motion:no-preference) {
 /* The light is a static painted disk; only its position and opacity change. */
 :is(.portal,.creation-card,.travel-version,.fact) { position:relative; overflow:hidden; }
 :is(.portal,.creation-card,.travel-version,.fact)::after { content:""; position:absolute; left:50%; top:45%; width:220px; height:220px; margin:-110px; pointer-events:none; background:radial-gradient(circle,#fffdf8a6,transparent 65%); opacity:0; translate:calc(var(--px,0)*100px) calc(var(--py,0)*80px); transition:opacity .25s ease,translate .18s ease; }
 :is(.portal,.creation-card,.travel-version,.fact).pointer-over::after { opacity:.7; }
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box).pointer-over {
   transform:perspective(900px) rotateX(calc(var(--py,0)*-3deg)) rotateY(calc(var(--px,0)*4deg)) !important;
   rotate:none;
 }
}
@media(any-hover:hover) and (any-pointer:fine) and (prefers-reduced-motion:no-preference) {
 .world-map :is(.garden-tree,.garden-pine,.garden-flower,.garden-cottage) { transform-box:fill-box; transform-origin:center bottom; transition:rotate .35s ease,translate .3s ease,scale .3s ease; }
 .garden-terrain { translate:calc(var(--px,0)*-5px) calc(var(--py,0)*-3px); transition:translate .3s ease; }
 .garden-sun { translate:calc(var(--px,0)*-9px) calc(var(--py,0)*-7px); transition:translate .35s ease; }
 .garden-tree { rotate:calc(var(--px,0)*2.5deg); }
 .garden-pine { rotate:calc(var(--px,0)*-2deg); }
 .garden-flower { rotate:calc(var(--px,0)*9deg); }
 .garden-cottage { translate:calc(var(--px,0)*4px) calc(var(--py,0)*-3px); rotate:calc(var(--px,0)*1deg); }
 .world-map :is(.garden-tree,.garden-pine,.garden-flower,.garden-cottage):hover { scale:1.06; }
 .world-map .garden-flower:hover { rotate:calc(var(--px,0)*18deg); }
 footer span,.map-caption { transition:translate .25s ease,color .25s ease; }
 footer span:hover,.map-caption:hover { translate:0 -3px; }
}
@media(any-hover:hover) and (any-pointer:fine) and (prefers-reduced-motion:no-preference) {
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box) {
   transition:transform .28s ease,translate .3s cubic-bezier(.2,.8,.2,1),rotate .25s ease,box-shadow .3s ease;
 }
 :is(.portal,.creation-card,.travel-version,.travel-photo,.fact,.love-card,.moment,.about-story,.love-note,.portrait-wrap,.contact-box).pointer-over { transition-duration:.1s,.3s,.25s,.3s; }
}
