/* Terminal motion after RhineLabUI (see licenses/credits.html). Type lives in style.css. */
/* Motion primitives (terminal-motion.js). */
.roll-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.roll{position:relative;display:inline-flex;height:1em;line-height:1;overflow:hidden;vertical-align:-.08em}
.roll-col,.roll-ch{user-select:none}
.roll-col{display:inline-block;height:1em;overflow:hidden}
.roll-strip{display:flex;flex-direction:column}
.roll-strip>span,.roll-ch{display:block;height:1em;line-height:1em}
.rt{display:inline-block;position:relative;overflow:hidden;vertical-align:bottom;max-width:100%}
.rt-old{position:absolute;left:0;top:0;width:100%}.rt-new{display:inline-block}
.typing:after{content:"";display:inline-block;width:.6em;height:1em;margin-left:3px;vertical-align:-.12em;background:currentColor;animation:tm-caret .8s steps(1) infinite}
.redaction{position:absolute;display:block;overflow:hidden;pointer-events:none;user-select:none;z-index:3}
.redaction>i{position:absolute;inset:0;background:var(--ink)}
html[data-motion=off] .redaction{display:none}
@keyframes tm-caret{50%{opacity:0}}
@keyframes tm-pulse{50%{opacity:.25}}

/* One rule glides under the pressed tab. */
.has-tab-ink{position:relative}
.tab-ink{position:absolute;pointer-events:none;background:var(--ink)}
.has-tab-ink>button{position:relative;z-index:1}

/* Footer clock. */
.footer-clock{display:inline-flex;align-items:center;gap:10px}
.footer-clock b{font-weight:600;color:var(--ink)}
.footer-clock i{width:5px;height:5px;border-radius:50%;background:var(--accent);animation:tm-pulse 2s ease-in-out infinite}

/* Surfaces: 300 ms in, 200 ms out. */
#toast{transition:opacity .2s cubic-bezier(.4,0,1,1),transform .2s cubic-bezier(.4,0,1,1)}
#toast.show{transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1)}

/* Opening lettering. */
.site-boot{position:fixed;inset:0;z-index:500;background:var(--bg);color:var(--ink);cursor:pointer;font-family:var(--font)}
.boot-brand{position:absolute;left:max(56px,7vw);top:50%;transform:translateY(-62%);display:flex;flex-direction:column;width:max-content;max-width:calc(100% - 48px)}
.boot-brand b{font-size:clamp(42px,6.2vw,96px);line-height:1;font-weight:700;letter-spacing:.05em;min-height:1em}
.boot-brand>span{font-size:clamp(13px,1.5vw,22px);line-height:1.3;font-weight:600;letter-spacing:.08em;margin:.4em 0 .15em;min-height:1.3em}
.boot-brand em{display:flex;justify-content:space-between;gap:.4em;font-style:normal;font-size:clamp(32px,4.6vw,72px);line-height:1.1;font-weight:300;letter-spacing:.06em;min-height:1.1em}
.boot-brand strong{font-weight:700}
.boot-meter{position:absolute;left:max(56px,7vw);right:max(56px,7vw);bottom:13%;display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px 20px}
.boot-status{font-size:11px;font-weight:600;letter-spacing:.18em;color:var(--muted)}
.boot-pct{font-size:44px;font-weight:300;font-variant-numeric:tabular-nums}
.boot-meter>i{grid-column:1/-1;height:1px;background:var(--line)}.boot-meter>i>b{display:block;height:100%;background:var(--ink);transform:scaleX(0);transform-origin:left}
.boot-skip{position:absolute;right:max(56px,7vw);top:7%;font-size:9px;font-weight:600;letter-spacing:.18em;color:var(--muted)}
.site-boot.leaving{pointer-events:none}
@media(max-width:560px){.boot-brand{left:24px}.boot-meter{left:24px;right:24px}.boot-skip{right:24px}.footer-clock{display:none}}
