.app-shell{visibility:hidden;opacity:0;pointer-events:none;transition:opacity .38s ease,visibility .38s ease}.app-shell.is-ready{visibility:visible;opacity:1;pointer-events:auto}.splash-screen,.login-screen{position:fixed;inset:0;z-index:100;background:#0b0d0e;overflow:hidden;color:#f4eee1}.splash-screen{display:grid;place-items:center;transition:opacity .42s ease,visibility .42s ease}.splash-screen.is-hidden{opacity:0;visibility:hidden}.splash-aura{position:absolute;width:80vw;height:80vw;border-radius:50%;background:radial-gradient(circle,rgba(201,164,92,.13),transparent 62%);filter:blur(8px);animation:aura-breathe 4s ease-in-out infinite}.splash-brand{position:relative;display:flex;align-items:center;gap:16px;z-index:2;opacity:0;animation:brand-rise 1s 1.4s cubic-bezier(.2,.8,.2,1) forwards}.splash-seal,.login-seal{width:54px;height:54px;border:1px solid #c9a45c;color:#c9a45c;display:grid;place-items:center;font:30px/1 Georgia,"Songti SC",serif;position:relative}.splash-seal:after,.login-seal:after{content:"";position:absolute;inset:5px;border:1px solid rgba(201,164,92,.3)}.splash-brand strong{display:block;font:500 34px Georgia,"Songti SC",serif;letter-spacing:8px}.splash-brand small{display:block;color:#898379;font-size:9px;letter-spacing:3px;margin-top:4px}.splash-progress{position:absolute;bottom:84px;width:120px;height:1px;background:#2c2c29;overflow:hidden}.splash-progress span{display:block;height:100%;background:#c9a45c;animation:load-line 2.1s cubic-bezier(.2,.7,.2,1) both}.splash-caption{position:absolute;bottom:48px;color:#756f65;font:12px Georgia,"Songti SC",serif;letter-spacing:5px;opacity:0;animation:caption-in .8s 1.7s forwards}.mountain-line{position:absolute;width:130%;height:33%;left:-15%;bottom:20%;background:linear-gradient(145deg,transparent 0 34%,rgba(201,164,92,.58) 34.2%,transparent 34.5% 43%,rgba(201,164,92,.28) 43.2%,transparent 43.5% 54%,rgba(201,164,92,.45) 54.2%,transparent 54.5%);clip-path:polygon(0 100%,12% 78%,20% 85%,32% 42%,40% 68%,51% 20%,61% 69%,73% 50%,82% 73%,93% 34%,100% 69%,100% 100%);pointer-events:none;opacity:0;animation:landscape-in 2.2s .18s ease-out forwards}.mountain-back{opacity:0;transform:translateY(-23px) scale(1.06);filter:blur(.4px);animation:landscape-back 2.3s .05s ease-out forwards}.mountain-front{opacity:0;animation:landscape-in 2.2s .35s ease-out forwards,mountain-drift 8s 2.6s ease-in-out infinite alternate}.wave-line{position:absolute;width:120%;height:18%;left:-10%;bottom:11%;border-top:1px solid rgba(201,164,92,.32);border-radius:50%;transform:rotate(-4deg) scaleX(.7);opacity:0;animation:wave-in 2.3s .65s ease-out forwards}.wave-two{bottom:7%;opacity:0;transform:rotate(3deg) scale(1.04);animation-delay:.9s}.login-screen{display:none;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#25231f 0,#111313 40%,#090a0b 100%);opacity:0;transition:opacity .55s ease}.login-screen.is-visible{display:flex;opacity:1}.login-screen.is-leaving{opacity:0;transform:scale(1.02);transition:opacity .5s,transform .5s}.login-panel{text-align:center;position:relative;z-index:2;animation:login-rise .7s .12s both}.login-seal{margin:0 auto 23px;width:62px;height:62px}.light-eyebrow{color:#7e786d;margin-bottom:9px}.login-panel h1{font:500 50px Georgia,"Songti SC",serif;letter-spacing:11px;margin:0 0 14px}.login-subtitle{color:#aaa49a;font:14px Georgia,"Songti SC",serif;margin:0 0 37px}.enter-btn{min-width:210px;border:1px solid #c9a45c;border-radius:2px;color:#18140d;background:linear-gradient(105deg,#b8934e,#ddc07c 50%,#b8934e);padding:13px 19px;font-weight:650;box-shadow:0 0 0 5px rgba(201,164,92,.06),0 11px 35px rgba(0,0,0,.3);transition:transform .25s,box-shadow .25s}.enter-btn span{margin-left:24px}.enter-btn:hover{transform:translateY(-2px);box-shadow:0 0 0 5px rgba(201,164,92,.1),0 15px 42px rgba(0,0,0,.4)}.login-footnote{display:block;color:#625f59;font-size:10px;margin-top:22px}.login-orbit{position:absolute;border:1px solid rgba(201,164,92,.13);border-radius:50%;transform:rotate(-18deg);animation:orbit-turn 18s linear infinite}.orbit-one{width:460px;height:170px}.orbit-two{width:650px;height:250px;transform:rotate(35deg);opacity:.45;animation-direction:reverse}@keyframes aura-breathe{50%{transform:scale(1.16);opacity:.65}}@keyframes brand-rise{from{opacity:0;transform:translateY(16px);letter-spacing:4px}to{opacity:1;transform:none}}@keyframes load-line{from{width:0}to{width:100%}}@keyframes landscape-in{0%{opacity:0;filter:brightness(.35) blur(7px)}65%{opacity:.38;filter:brightness(.75) blur(1px)}100%{opacity:.58;filter:brightness(1) blur(0)}}@keyframes landscape-back{0%{opacity:0}100%{opacity:.18}}@keyframes wave-in{0%{opacity:0;transform:rotate(-4deg) scaleX(.5)}100%{opacity:.32;transform:rotate(-4deg) scaleX(1)}}@keyframes caption-in{to{opacity:1}}@keyframes mountain-drift{to{transform:translateX(2%) scale(1.02)}}@keyframes login-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes orbit-turn{to{transform:rotate(342deg)}}
@media(max-width:800px){.splash-brand strong{font-size:31px}.splash-seal{width:50px;height:50px}.login-panel h1{font-size:45px}.mountain-line{bottom:25%}.splash-caption{bottom:42px}}
.splash-landscape{position:absolute;left:0;bottom:13%;width:100%;height:54%;overflow:visible;z-index:1}.splash-landscape path{fill:none;stroke:url(#goldStroke);stroke-linecap:round;stroke-linejoin:round}.landscape-back{stroke-width:2.2;opacity:0;filter:drop-shadow(0 0 7px rgba(201,164,92,.25));stroke-dasharray:1800;stroke-dashoffset:1800;animation:svg-draw 2.3s .1s ease-out forwards,svg-glow 3.4s 1.9s ease-in-out infinite alternate}.landscape-front{stroke-width:3.1;opacity:0;filter:drop-shadow(0 0 9px rgba(201,164,92,.4));stroke-dasharray:1700;stroke-dashoffset:1700;animation:svg-draw 2.2s .35s ease-out forwards,svg-glow 3.1s 2.1s ease-in-out infinite alternate}.landscape-wave{stroke-width:1.8;opacity:0;stroke-dasharray:1450;stroke-dashoffset:1450}.wave-a{animation:svg-draw 2s .85s ease-out forwards}.wave-b{animation:svg-draw 2s 1.1s ease-out forwards}.app-shell{visibility:hidden;opacity:0;pointer-events:none}.app-shell.is-ready{visibility:visible;opacity:1;pointer-events:auto}.page{opacity:0;transform:translateY(8px);transition:opacity .28s ease,transform .28s ease}.page.active-page{animation:page-in .34s ease forwards}.page.page-leaving{opacity:0;transform:translateY(-5px);transition:opacity .14s ease,transform .14s ease}.profile-hero,.profile-grid{animation:content-rise .42s .08s both}.community-grid,.dashboard-grid,.signal-grid{animation:content-rise .38s .06s both}@keyframes svg-draw{to{opacity:1;stroke-dashoffset:0}}@keyframes svg-glow{to{filter:drop-shadow(0 0 15px rgba(240,209,138,.65))}}@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes content-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-width:800px){.splash-landscape{bottom:18%;height:43%}}
/* Android WebView visibility fallback */
.splash-landscape .landscape-back{opacity:.36!important;stroke-dashoffset:0!important}.splash-landscape .landscape-front{opacity:.72!important;stroke-dashoffset:0!important}.splash-landscape .landscape-wave{opacity:.42!important;stroke-dashoffset:0!important}.splash-brand{opacity:1!important}.splash-caption{opacity:1!important}.splash-screen{background:#0b0d0e!important}.login-screen.is-visible{display:flex!important;opacity:1!important}
.splash-landscape{bottom:24%;height:58%;transform:translateY(-5%)}.splash-landscape path{stroke-linecap:round;stroke-linejoin:round}.mist{fill:#9b8d71;opacity:0;filter:url(#inkBlur);animation:mist-in 2.8s .2s ease-out forwards}.mist-two{animation-delay:.45s;opacity:0}.ink-ridge{stroke:#433e34;stroke-width:2;fill:url(#inkMountain);opacity:0;filter:drop-shadow(0 9px 18px rgba(0,0,0,.25));animation:ink-in 2.6s .35s ease-out forwards}.ridge-near{animation-delay:.7s}.gold-ridge{fill:none;stroke:url(#goldStroke);stroke-width:3.2;opacity:0;stroke-dasharray:620;stroke-dashoffset:620;filter:drop-shadow(0 0 8px rgba(220,183,105,.35));animation:gold-draw 2.2s 1s ease-out forwards}.gold-ridge.subtle{stroke-width:2;opacity:0;animation-delay:1.25s}.landscape-wave{opacity:0;stroke-dasharray:1450;stroke-dashoffset:1450}.wave-a{animation:svg-draw 2.1s 1.15s ease-out forwards}.wave-b{animation:svg-draw 2.1s 1.4s ease-out forwards}.wave-c{animation:svg-draw 2.1s 1.65s ease-out forwards}@keyframes mist-in{0%{opacity:0;transform:translateX(-3%)}100%{opacity:.25;transform:none}}@keyframes ink-in{0%{opacity:0;transform:translateY(18px) scale(.97)}100%{opacity:.72;transform:none}}@keyframes gold-draw{to{opacity:.86;stroke-dashoffset:0}}@media(max-width:800px){.splash-landscape{bottom:27%;height:51%;transform:translateY(-4%)}}
/* ink-wash reference drawing */
.splash-landscape{bottom:20%;height:66%;transform:translateY(-5%)}.ink-stroke{fill:none;stroke:#d8c18a;stroke-width:3;stroke-linecap:round;opacity:.72;filter:drop-shadow(0 0 5px rgba(216,193,138,.24))}.ink-stroke.fine{stroke-width:2;opacity:.55}.waterfall{stroke:#e2c783;stroke-width:2.3;opacity:.72}.mist{opacity:.32}.ink-ridge{opacity:.78}.gold-ridge{opacity:.9}.landscape-wave{opacity:.5}@keyframes brand-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.ink-landscape-image{position:absolute;z-index:1;left:0;right:0;top:8%;height:78%;background-image:linear-gradient(to bottom,rgba(8,9,9,.2),rgba(8,9,9,.32)),url('./assets/shanhai-mountain.jpg');background-size:cover;background-position:center center;background-repeat:no-repeat;opacity:0;filter:brightness(.28) contrast(.84) saturate(.72) blur(8px);transform:scale(1.045) translateY(16px);animation:ink-image-reveal 3.4s .2s cubic-bezier(.2,.7,.2,1) forwards}.ink-landscape-image:after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 22%,rgba(236,204,131,0) 43%,rgba(236,204,131,.34) 50%,rgba(236,204,131,0) 57%,transparent 76%);mix-blend-mode:screen;opacity:0;animation:gold-image-sweep 2.3s 2.1s ease-in-out forwards}.splash-landscape{opacity:.1!important;z-index:0}.splash-brand{z-index:4}.splash-progress,.splash-caption{z-index:4}@keyframes ink-image-reveal{0%{opacity:0;filter:brightness(.2) contrast(.7) saturate(.5) blur(10px);transform:scale(1.045) translateY(18px)}55%{opacity:.86;filter:brightness(.42) contrast(.95) saturate(.8) blur(3px)}100%{opacity:.98;filter:brightness(.68) contrast(1.08) saturate(.88) blur(0);transform:scale(1) translateY(0)}}@keyframes gold-image-sweep{0%{opacity:0;transform:translateX(-35%)}35%{opacity:1}100%{opacity:0;transform:translateX(35%)}}
/* compact hero composition */
.ink-landscape-image{left:7%;right:7%;top:16%;height:61%;border-radius:4px;background-size:contain;background-position:center;background-color:#0b0d0e;box-shadow:0 18px 55px rgba(0,0,0,.24)}
@media(max-width:800px){.ink-landscape-image{left:5%;right:5%;top:17%;height:58%;background-size:contain}}
/* smaller centered artwork, preserve generous black negative space */
.ink-landscape-image{left:14%;right:14%;top:20%;height:48%;background-size:contain;background-position:center;border-radius:3px;box-shadow:none}
@media(max-width:800px){.ink-landscape-image{left:12%;right:12%;top:21%;height:45%;background-size:contain}}
/* preserve the source artwork color; reveal with opacity instead of tinting */
.ink-landscape-image{background-image:url('./assets/shanhai-mountain.jpg');background-color:#101010;filter:none;opacity:0;transform:scale(1.018) translateY(8px);animation:ink-image-color-reveal 3.4s .2s cubic-bezier(.2,.7,.2,1) forwards}.ink-landscape-image:after{background:linear-gradient(115deg,transparent 25%,rgba(236,204,131,0) 45%,rgba(236,204,131,.16) 50%,rgba(236,204,131,0) 55%,transparent 75%);opacity:0;animation:gold-image-sweep 2.3s 2.1s ease-in-out forwards}@keyframes ink-image-color-reveal{0%{opacity:0;filter:blur(4px);transform:scale(1.018) translateY(8px)}55%{opacity:.76;filter:blur(1px)}100%{opacity:1;filter:none;transform:scale(1) translateY(0)}}
/* blend artwork into the black stage and keep the wordmark below the landscape */
.ink-landscape-image{left:6%;right:6%;top:13%;height:61%;background-color:transparent;background-image:linear-gradient(to right,rgba(12,13,13,1) 0%,rgba(12,13,13,0) 14%,rgba(12,13,13,0) 86%,rgba(12,13,13,1) 100%),linear-gradient(to bottom,rgba(12,13,13,1) 0%,rgba(12,13,13,0) 13%,rgba(12,13,13,0) 83%,rgba(12,13,13,1) 100%),url('./assets/shanhai-mountain.jpg');background-size:100% 100%,100% 100%,contain;background-position:center;background-repeat:no-repeat;mix-blend-mode:screen}.splash-brand{top:72%;position:absolute;transform:translateY(0);animation:brand-rise-bottom 1s 3.3s cubic-bezier(.2,.8,.2,1) forwards}.splash-progress{bottom:9%}.splash-caption{bottom:5%}.splash-seal{width:43px;height:43px;font-size:24px}.splash-brand strong{font-size:28px;letter-spacing:7px}.splash-brand small{font-size:8px}@keyframes brand-rise-bottom{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:800px){.ink-landscape-image{left:3%;right:3%;top:14%;height:59%}.splash-brand{top:70%}}
/* Final artwork only: no SVG overlay, no blend filter */
.splash-landscape{display:none!important}.ink-landscape-image{left:8%;right:8%;top:13%;height:61%;background-image:url('./assets/shanhai-mountain-feathered.png');background-color:transparent;background-size:contain;background-position:center;background-repeat:no-repeat;mix-blend-mode:normal;filter:none}.ink-landscape-image:after{display:none}@media(max-width:800px){.ink-landscape-image{left:5%;right:5%;top:14%;height:59%}}
/* Faster focus, longer clear hold */
.ink-landscape-image{animation-duration:2.45s;animation-delay:.15s}
.ink-landscape-image:after{animation-delay:1.65s;animation-duration:1.7s}
.splash-brand{animation-delay:2.55s}
/* Stable brand layer and black-to-black crossfade */
.splash-screen{background:#0b0d0e!important}.splash-brand{will-change:opacity;transform:none!important;animation:brand-fade-stable .7s 3.05s ease-out forwards!important}.splash-brand strong,.splash-brand small,.splash-seal{transform:none!important}.login-screen{background:#0b0d0e!important;transition:opacity .7s ease!important}.login-screen.is-visible{background:#0b0d0e!important}.login-panel{backface-visibility:hidden;transform:translateZ(0)}@keyframes brand-fade-stable{from{opacity:0}to{opacity:1}}
/* Crossfade login above the splash; never expose the WebView default background */
.login-screen{display:flex!important;visibility:hidden;opacity:0;background:#0b0d0e!important;z-index:110;pointer-events:none}.login-screen.is-visible{visibility:visible;opacity:1;pointer-events:auto}.splash-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
/* Slightly shorter finished-artwork hold */
.splash-brand{animation-delay:2.8s}
