:root{--entry-bg:#f2f5f3;--entry-ink:#20342f;--entry-track:#d9e4df;--entry-accent:#176b5b}
html.dark{--entry-bg:#101a18;--entry-ink:#dce8e2;--entry-track:#293b35;--entry-accent:#5ab89b}
html.entry-loading{background:var(--entry-bg);overflow:hidden}
html.entry-loading body{overflow:hidden}
html.entry-loading #app{visibility:hidden}
#entry-loader{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;overflow:hidden;background:var(--entry-bg);color:var(--entry-ink);font-family:Inter,"Segoe UI",Arial,sans-serif;transition:opacity .38s ease,visibility .38s}
.entry-loader-content{display:flex;flex-direction:column;align-items:center;gap:36px;width:100%;transform:translateY(-12px);animation:entry-content-reveal .42s ease-out both;transition:transform .38s ease}
.entry-loader-name{min-height:1.6em;max-width:min(80vw,640px);font-size:34px;font-weight:700;line-height:1.6;text-align:center;overflow-wrap:anywhere}
.entry-loader-letter{display:inline-block;white-space:pre;backface-visibility:hidden;animation:entry-letter-wave var(--entry-wave-duration,1.8s) ease-in-out infinite;animation-delay:var(--letter-delay,0ms)}
.entry-loader-progress{--entry-segment-width:min(64px,20vw);position:relative;width:min(220px,65vw);padding-top:40px}
.entry-loader-track{height:3px;overflow:hidden;border-radius:999px;background:var(--entry-track)}
.entry-loader-bar{position:absolute;left:0;bottom:0;width:var(--entry-segment-width);height:3px;border-radius:999px;background:var(--entry-accent)}
.entry-loader-mark-travel{position:absolute;inset:0 var(--entry-segment-width) 0 0;animation:entry-progress-travel 3.6s linear infinite}
.entry-loader-mark{display:grid;place-items:center;width:48px;height:40px;margin-left:var(--entry-segment-width);transform:translateX(-50%)}
.entry-loader-pan-icon{width:38px;height:38px;object-fit:contain;animation:entry-mark-float 1.8s ease-in-out infinite}
#entry-loader.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
#entry-loader.is-leaving .entry-loader-content{transform:translateY(-20px)}
@keyframes entry-content-reveal{from{opacity:0}to{opacity:1}}
@keyframes entry-letter-wave{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes entry-progress-travel{from{transform:translateX(0)}to{transform:translateX(100%)}}
@keyframes entry-mark-float{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){#entry-loader,.entry-loader-content{transition-duration:.12s}#entry-loader *{animation:none!important}.entry-loader-mark-travel{transform:translateX(50%)}.entry-loader-bar{opacity:.6}}
