/* ══════════════════════════════════════════════════════════════════════════
   UBIAMI · THE STAGE  ·  styles for assets/stage.js (15 Oct 2026)
   Uses the page tokens (--ink, --petrol, --display …) plus the warm
   illustration palette defined on :root of the page (--sand, --sage …).
   ══════════════════════════════════════════════════════════════════════════ */

.st{position:relative}
.st.is-live:not(.is-still){height:300vh}
.st-sticky{position:relative;display:flex;flex-direction:column;gap:14px;padding:22px 0 26px}
.st.is-live:not(.is-still) .st-sticky{position:sticky;top:0;height:100vh;height:100svh;padding-top:86px}

.st-roles{display:flex;flex-wrap:wrap;gap:8px;min-height:34px}
.st-roles button,.st-roles a{display:inline-flex;align-items:center;font:inherit;font-size:14px;height:34px;padding:0 15px;border-radius:999px;cursor:pointer;
  background:transparent;color:var(--muted);border:1px solid var(--line);transition:all var(--fast) var(--ease)}
.st-roles button:hover,.st-roles a:hover{color:var(--ink);border-color:var(--line-control)}
.st-roles button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.st h1,.st .st-h{font-family:var(--display);font-weight:400;letter-spacing:-.015em;line-height:1.02;
  font-size:clamp(32px,4.4vw,58px);max-width:24ch}
.st h1 .st-q2,.st .st-h .st-q2{display:block;font-style:italic;color:var(--sage-ink)}

.st-stage{position:relative;flex:1;min-height:340px;border-radius:22px;overflow:hidden;background:var(--sand);
  box-shadow:inset 0 0 0 1px var(--sand-line)}
.st:not(.is-live) .st-stage{display:none}

.st-scene{position:absolute;inset:0;opacity:.9}
.st-scene svg,.st-scene img{width:100%;height:100%;display:block;object-fit:cover}

.st-person{position:absolute;bottom:0;height:min(84%,500px);aspect-ratio:4/5;transform:translateX(-50%);transform-origin:50% 16%}
.st-p{position:absolute;inset:0;transition:opacity .25s linear}
.st-p svg,.st-p img{width:100%;height:100%;display:block;object-fit:contain;object-position:50% 100%}

.st-ubi{position:absolute;width:clamp(84px,13%,150px);aspect-ratio:1;color:var(--ubi-ink);opacity:0;
  transform:translate(-50%,-50%)}
.st-ubi svg{width:100%;height:100%;display:block;background:var(--sand);border-radius:50%}

.st-note{position:absolute;transform:translate(-50%,-50%);z-index:3;width:max-content;max-width:min(240px,46vw);
  transition:opacity .15s linear;pointer-events:none}
.st-in{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;font-size:14px;line-height:1.3;
  background:var(--note);color:var(--ink);box-shadow:0 0 0 1px var(--note-line),0 6px 14px -10px rgba(47,58,53,.35);
  transform:rotate(var(--tilt));animation:st-bob 4.5s ease-in-out var(--bob) infinite;
  transition:background .25s,color .25s,box-shadow .25s,transform .25s}
.st-ico{flex:none;width:7px;height:7px;border-radius:50%;background:var(--worry)}
.st-note.is-moving .st-in{animation:none}
.st-note.is-done{max-width:min(300px,46vw)}
.st-note.is-done .st-in{background:var(--sage-soft);color:var(--sage-ink);transform:rotate(0);animation:none;
  box-shadow:0 0 0 1px var(--sage-line)}
.st-note.is-done .st-ico{width:14px;height:14px;background:none;border-radius:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F4A2C' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  background-size:contain}
.st-soon{display:none;flex:none;font-style:normal;font-size:11px;font-weight:500;letter-spacing:.03em;
  padding:2px 7px;border-radius:999px;background:var(--note);color:var(--muted);box-shadow:0 0 0 1px var(--sage-line)}
.st-note.is-done .st-soon{display:inline-block}
@keyframes st-bob{0%,100%{translate:0 0}50%{translate:0 -5px}}

.st-count{position:absolute;transform:translate(-50%,-50%);font-size:13px;font-weight:500;color:var(--sage-ink);
  background:var(--sage-soft);padding:4px 10px;border-radius:999px;white-space:nowrap;opacity:0;transition:opacity .2s}

.st-card{position:absolute;z-index:4;width:min(300px,84%);transform:translate(-50%,-50%);opacity:0;
  background:var(--paper-lift);border-radius:14px;padding:14px 18px;text-align:center;line-height:1.45;
  box-shadow:0 0 0 1px var(--sage-line),0 14px 30px -18px rgba(47,58,53,.45)}
.st-card b{display:block;font-weight:500;font-size:15.5px;color:var(--ink)}
.st-card span{display:block;font-size:14px;color:var(--muted);margin-top:2px}

.st-hint{position:relative;height:22px;font-size:14px;color:var(--muted);text-align:center}
.st-hint::before,.st-hint::after{position:absolute;inset:0;transition:opacity .4s}
.st-hint::before{content:attr(data-a) "  \2193"}
.st-hint::after{content:attr(data-b);opacity:0;color:var(--sage-ink);font-family:var(--display);font-size:22px;line-height:1}
.st-hint.is-end::before{opacity:0}
.st-hint.is-end::after{opacity:1}

/* finished state: reduced motion. The story is told as a still. */
.st.is-still .st-stage{min-height:460px}
.st.is-still .st-hint::before{opacity:0}
.st.is-still .st-hint::after{opacity:1}

@media (max-width:720px){
  .st-roles button,.st-roles a{font-size:13px;height:32px;padding:0 12px}
  .st-stage{min-height:380px;border-radius:16px}
  .st-person{height:56%}
  .st-in{font-size:12.5px;padding:6px 10px}
  .st-ubi{width:66px}
  .st-note.is-done{max-width:56vw}
  .st-note.is-done .st-in{font-size:12px;padding:5px 9px;gap:6px}
  .st-soon{font-size:10px;padding:1px 6px}
}
