diff --git a/android/app/AndroidManifest.xml b/android/app/AndroidManifest.xml
index 8a1e9cf..0c5b39f 100644
--- a/android/app/AndroidManifest.xml
+++ b/android/app/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="12"
+ android:versionName="0.9.0">
@@ -36,6 +36,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/assets/carinha.html b/android/app/assets/carinha.html
index 0ab791e..74e69ac 100644
--- a/android/app/assets/carinha.html
+++ b/android/app/assets/carinha.html
@@ -20,6 +20,52 @@
@keyframes aparecerFigura{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.iconeOlho,.figurinhaDinamica{animation:none}}
#fps{position:fixed;left:4px;top:2px;color:#2b3a4a;font:12px monospace;display:none}
+ /* sem a placa: placa ✕ celular na cor dos olhos. Deitado, o rosto dormindo fica onde está e o
+ desenho fica em pé no canto direito; em pé, o rosto sobe e o desenho vai embaixo. */
+ #semServidor{position:fixed;right:2.5vw;top:50%;transform:translateY(-50%);width:min(24vw,42vh);
+ z-index:5;pointer-events:none;text-align:center;opacity:.82;font-family:system-ui,sans-serif;
+ animation:semServidorEntra 1.2s ease-out}
+ #semServidor svg{display:block;margin:0 auto;overflow:visible;filter:drop-shadow(0 0 3px currentColor)}
+ #semServidor svg.horizontal{display:none}
+ #semServidor svg.vertical{height:58vh;width:auto;max-width:100%}
+ #semServidor svg.vertical .olhinhos{animation-name:semServidorOlharCima}
+ @media (orientation:portrait){
+ body.semServidor #tela,body.semServidor #rostoMotor{transform:translateY(-20%) scale(.8)}
+ #semServidor{right:auto;top:auto;left:50%;bottom:3.5vh;transform:translateX(-50%);width:min(80vw,400px)}
+ #semServidor svg.horizontal{display:block;width:100%;height:auto}
+ #semServidor svg.vertical{display:none}
+ }
+ #semServidor .titulo{text-wrap:balance;font-weight:600;font-size:clamp(12px,3.2vh,20px);margin-top:.4em;letter-spacing:.02em}
+ #semServidor .sub{font-size:clamp(10px,2.4vh,15px);opacity:.6;margin-top:.25em;font-variant-numeric:tabular-nums}
+ #semServidor .placa rect,#semServidor .celular>rect{fill:none;stroke:currentColor;stroke-width:3}
+ #semServidor .chip{fill:currentColor;fill-opacity:.25}
+ #semServidor .pino{fill:currentColor;opacity:.7}
+ #semServidor .led{fill:#ff5a5a;animation:semServidorLed 1.6s steps(1) infinite}
+ #semServidor .cabo{stroke:currentColor;stroke-width:3;stroke-dasharray:5 6;opacity:.5;fill:none}
+ #semServidor .arco{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;opacity:0;
+ animation:semServidorArco 2.4s ease-out infinite}
+ #semServidor .a2{animation-delay:.3s}
+ #semServidor .a3{animation-delay:.6s}
+ #semServidor .xis path{stroke:#ff5a5a;stroke-width:5;stroke-linecap:round;fill:none}
+ #semServidor .xis{transform-box:fill-box;transform-origin:center;animation:semServidorXis 2.4s ease-in-out infinite}
+ #semServidor .olhinhos{fill:currentColor;transform-box:fill-box;transform-origin:center;
+ animation:semServidorOlhar 5s ease-in-out infinite}
+ #semServidor .boquinha{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
+ #semServidor .celular{transform-box:fill-box;transform-origin:50% 100%;animation:semServidorProcura 4.8s ease-in-out infinite}
+ #semServidor.cutucado .celular{animation:semServidorChacoalha .5s ease-in-out}
+ @keyframes semServidorEntra{from{opacity:0}to{opacity:.82}}
+ /* em pé no canto direito: o celularzinho olha para cima, para a placa */
+ @keyframes semServidorOlharCima{0%,30%{transform:translateY(-3px) scaleY(1)}34%{transform:translateY(-3px) scaleY(.1)}38%,60%{transform:translateY(-3px) scaleY(1)}
+ 70%,90%{transform:translateY(1px) scaleY(1)}100%{transform:translateY(-3px)}}
+ @keyframes semServidorArco{0%{opacity:0}25%{opacity:.9}70%,100%{opacity:0}}
+ @keyframes semServidorXis{0%,55%,100%{transform:scale(1);opacity:.75}65%{transform:scale(1.25);opacity:1}80%{transform:scale(1);opacity:.85}}
+ @keyframes semServidorLed{0%{opacity:1}50%{opacity:.15}}
+ /* o celularzinho olha para a placa, olha de volta e pisca */
+ @keyframes semServidorOlhar{0%,30%{transform:translateX(-3px) scaleY(1)}34%{transform:translateX(-3px) scaleY(.1)}38%,60%{transform:translateX(-3px) scaleY(1)}
+ 70%,90%{transform:translateX(1px) scaleY(1)}100%{transform:translateX(-3px)}}
+ @keyframes semServidorProcura{0%,100%{transform:rotate(0)}20%{transform:rotate(-5deg)}40%{transform:rotate(0)}}
+ @keyframes semServidorChacoalha{0%,100%{transform:rotate(0)}25%{transform:rotate(-9deg)}50%{transform:rotate(7deg)}75%{transform:rotate(-4deg)}}
+ @media(prefers-reduced-motion:reduce){#semServidor *,#semServidor{animation:none!important}#semServidor .arco{opacity:.6}}