/* Complete local opening. No scenery silhouette is visible in the waiting state. */
.ink-opening #name-drawing{display:none}
#name-written{display:block;width:248.73px;height:91.2px}
.ink-opening #scene #chair,.ink-opening #scene #stand{opacity:1}
.ink-opening #scene #ground,.ink-opening #scene #shadows{opacity:var(--ground-arrival,0)}
.ink-opening #screen{opacity:1}
.ink-opening #screen .cloth-paper,.ink-opening #projection,.ink-opening #cloth-feather{opacity:var(--paper-arrival,0)}
.ink-opening #screen .cloth-pencil{opacity:.6}
.ink-opening #machine{opacity:1;transition:none}
.ink-opening #machine .machine-base{opacity:0}
.ink-opening #machine .machine-inking{position:absolute;inset:0;fill:none;stroke:none;width:360px;height:472px;overflow:visible}
.ink-opening #machine .reel-inking{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:none;overflow:visible}
.ink-opening.in-view #projection,.ink-opening.in-view #screen .cloth-paper{opacity:1}
.ink-opening #scene svg.scenery{fill:none;stroke:none;overflow:visible}
.ink-opening.in-view.quiet #machine{opacity:.76}
.ink-opening.in-view.quiet.interacting.near-power #machine{opacity:1}
@media(max-width:850px){#name-written{width:180px;height:66px}}

.ink-opening.awaiting #machine,.ink-opening.awaiting #screen,.ink-opening.awaiting #scene{visibility:hidden}

/* Text remains in its final position. Scene arrival follows the reading beat. */
body.ink-opening{--name-ink:0;--role-ink:0;--bio-one:0;--bio-two:0;--address-ink:0;--chair-arrival:0}
.ink-opening #scene #chair{opacity:var(--chair-arrival,0)}
.ink-opening #moving-screen-hem,.ink-opening #screen-roll-lip{pointer-events:none}
.ink-opening #beam{opacity:calc(var(--lamp) * var(--unroll-light,0))}
@media(max-width:850px){body.ink-opening.awaiting #page{height:auto!important;min-height:100svh}}
.ink-opening #profile h1{opacity:var(--name-ink,0)}

/* The curve is a visual cue; only the red dot activates the opening. */
.ink-opening #boot-note{pointer-events:none!important;cursor:default}
.ink-opening #boot-note span{display:none}
.ink-opening.awaiting #boot-note path{stroke-dasharray:1;animation:waiting-curve .95s .3s cubic-bezier(.2,.65,.3,1) both}
@keyframes waiting-curve{from{stroke-dashoffset:-1;opacity:0}12%{opacity:1}to{stroke-dashoffset:0;opacity:1}}
@media(prefers-reduced-motion:reduce){.ink-opening.awaiting #boot-note path{animation:none;stroke-dashoffset:0}}

/* Stronger, slow ink swell: continuous color and size, never an on/off warning light. */
body.ink-opening.awaiting #power i{animation:ink-invite-paced 4.5s cubic-bezier(.37,0,.28,1) infinite}
@keyframes ink-invite-paced{
  0%,12%,100%{transform:scale(1);background:#9e5c47;opacity:.88}
  40%,53%{transform:scale(1.52,1.43);background:#d78860;opacity:1}
  82%{transform:scale(1.04,1.03);background:#a8624b;opacity:.93}
}
@media(prefers-reduced-motion:reduce){body.ink-opening.awaiting #power i{animation:none;background:#be7757;opacity:1}}
