/* One viewport for the entire ceremony and shared cake/memory world. */
html.ritual-single-stage,html.ritual-single-stage body{height:100%;overflow:hidden;overscroll-behavior:none}
html.ritual-single-stage #birthday-world,html.ritual-single-stage main{height:100svh;overflow:clip}
html.ritual-locked body{overflow:hidden}
html.ritual-locked #birthday-world,html.ritual-locked main{height:100svh;overflow:clip}
.opening-story{min-height:0;height:100svh}
.site-header .brand{font-family:Georgia,'Times New Roman',serif;font-size:12px;letter-spacing:2px}
@media(max-width:720px){.site-header .brand{font-size:10px;letter-spacing:1.2px}}
.ritual-panel>p:empty,.ritual-panel>span:empty{display:none}
.opening-sticky{overflow:clip}
html.ritual-locked .site-header nav{visibility:hidden}
.ritual-panel{bottom:115px}.ritual-panel>p{font-size:15px}.ritual-panel>span{font-size:12px}
[data-ritual-state="greeting"] .ritual-panel,[data-ritual-state="blessing"] .ritual-panel,[data-ritual-state="envelope"] .ritual-panel{display:none}
[data-ritual-state="greeting"] .opening-top-note{display:none}
.opening-touch{touch-action:pan-y}
[data-ritual-state="explore"] .opening-touch,[data-ritual-state="blowing"] .opening-touch{touch-action:none;cursor:grab}
[data-ritual-state="blowing"] .opening-touch{cursor:crosshair}
.wind-panel{position:absolute;z-index:7;left:20px;right:20px;bottom:80px;display:flex;align-items:center;justify-content:center;gap:15px;flex-wrap:wrap}
.wind-panel button{min-height:46px;padding:10px 20px;border-radius:25px;background:#f4b3cb;color:#491a30;font-size:15px}
.wind-panel button[aria-pressed="true"]{background:#ffe1e8;transform:scale(.98)}
.wind-panel>span{color:#c59aae;font-size:11px}.wind-level{width:90px;height:4px;background:#553344;overflow:hidden;border-radius:10px}.wind-level i{display:block;width:100%;height:100%;background:#ffd0de;transform-origin:left;transform:scaleX(var(--wind-energy,0))}
.wind-lines{position:absolute;inset:20% 12% 19%;pointer-events:none;z-index:4;opacity:0;transform:translateY(10px)}
.wind-lines svg{width:100%;height:100%;fill:none;stroke:#ffd8e6;stroke-width:1.5;stroke-dasharray:14 20;stroke-linecap:round}
[data-ritual-state="blowing"] .wind-lines{opacity:var(--wind,0);transform:translateY(calc((1 - var(--wind,0))*12px))}
[data-ritual-state="blowing"] .ritual-panel{bottom:165px}
.explore-tools{position:absolute;z-index:7;bottom:76px;left:16px;right:16px;display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none}
.view-buttons{display:flex;gap:7px;pointer-events:auto}.view-buttons button{min-height:44px;min-width:44px;padding:8px 13px;color:#f5cada;background:#392331e8;border:1px solid #6a4056;border-radius:22px;font-size:12px}
.memory-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:600px;pointer-events:auto;padding:10px;background:#261a24f5;border:1px solid #6a4056;border-radius:8px}
.memory-list button{min-height:44px;padding:8px;color:#f6d9e5;background:#493040;font-size:12px;border-radius:4px}
[data-ritual-state="explore"] .ritual-panel{bottom:138px;pointer-events:none}
.opening-controls{z-index:7}
.letter-backdrop-active .wind-panel,.letter-backdrop-active .explore-tools{visibility:hidden}
.scene-fallback img[hidden]{display:none!important}
.ritual-static:not([data-ritual-state="greeting"]) .ritual-fallback-cake{display:block;position:absolute;width:min(66vw,55svh);height:min(66vw,55svh);bottom:11%;left:50%;transform:translateX(-50%)}
.ritual-static[data-ritual-state="cake"] .ritual-fallback-cake,.ritual-static[data-ritual-state="wishing"] .ritual-fallback-cake,.ritual-static[data-ritual-state="blowing"] .ritual-fallback-cake,.ritual-static[data-ritual-state="explore"] .ritual-fallback-cake{width:min(85vw,68svh);height:min(85vw,68svh);bottom:22%}
.ritual-static[data-ritual-state="blowing"] .ritual-fallback-cake{--flame-opacity:1}
.ritual-static[data-ritual-state="blessing"] .particle-title-fallback,.ritual-static[data-ritual-state="finishing"] .particle-title-fallback{position:absolute;left:50%;top:9%;transform:translateX(-50%);width:min(82vw,70svh);max-height:36svh;object-fit:contain}
.ritual-static .view-buttons #view-in,.ritual-static .view-buttons #view-out,.ritual-static .view-buttons #view-reset{display:none}
@media(max-width:720px){.ritual-panel{bottom:125px;left:20px;right:20px}.ritual-panel>p{font-size:14px;letter-spacing:.5px}.ritual-panel>span{font-size:11px}.ritual-panel>.button{font-size:14px;min-height:46px}.wind-panel{bottom:70px;gap:10px}.wind-panel>span{width:100%;text-align:center;font-size:10px}.wind-level{width:62px}[data-ritual-state="blowing"] .ritual-panel{bottom:172px}.view-buttons{gap:5px}.view-buttons button{padding:8px 10px;font-size:11px}.memory-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:44svh;overflow:auto}.explore-tools{bottom:72px}[data-ritual-state="explore"] .ritual-panel{bottom:133px}.wind-lines{inset:24% 4% 24%}}
@media(max-height:650px){.ritual-panel{bottom:100px}.ritual-panel>p{font-size:12px}.ritual-panel>span{font-size:10px}.explore-tools{bottom:61px}[data-ritual-state="explore"] .ritual-panel{bottom:115px}[data-ritual-state="blowing"] .ritual-panel{bottom:155px}.wind-panel{bottom:59px}.opening-controls{bottom:9px}}

.memory-list-open .ritual-panel{display:none}
