/* HANDOFF §239 — never a blank page (the owner: «بدل ماتكون الصفحة بيضا او سودة … اللوغو بالنص وخط عم يحمل»).
 * Shown by index.html itself from the first paint, before the app's code arrives; the app removes it once it draws
 * (main.jsx), and the same look covers the sign-in check (StateBox PageLoader). A plain file — the page's CSP keeps
 * style-src 'self'. The colours are the theme's page colours (boot.js sets data-theme first); inside the phone app it
 * is the launch screen's own: the dark brand background and the mark at the same place and size (28 vmax, centred). */
.boot-loader { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; background: #FAF8F4; transition: opacity .25s ease; }
[data-theme="dark"] .boot-loader { background: #0B0A09; }
[data-app] .boot-loader { background: #0B0A09; }
.boot-loader.is-done { opacity: 0; pointer-events: none; }
.boot-mark { display: block; width: 76px; height: 76px; }
[data-app] .boot-mark { width: 28vmax; height: 28vmax; }
/* HANDOFF §268 (the owner: «اول شي لازم يظهر الانترو تبعنا ووراه بيعمل كونيكتج»): the moving line comes in only when the
 * app is slow (still loading after 3 s) — a normal start shows the mark, then the intro, never a loading line first */
.boot-bar { position: absolute; left: 50%; top: calc(50% + 38px + 28px); width: 132px; height: 3px; margin-left: -66px; border-radius: 3px; overflow: hidden; background: rgba(229, 169, 60, .2); opacity: 0; animation: boot-bar-in .3s ease 3s forwards; }
@keyframes boot-bar-in { to { opacity: 1; } }
[data-app] .boot-bar { top: calc(50% + 14vmax + 28px); }
.boot-bar > span { display: block; width: 40%; height: 100%; border-radius: 3px; background: #E5A93C; animation: boot-slide 1.1s ease-in-out infinite; }
[dir="rtl"] .boot-bar > span { animation-name: boot-slide-rtl; }
@keyframes boot-slide { from { transform: translateX(-110%); } to { transform: translateX(260%); } }
@keyframes boot-slide-rtl { from { transform: translateX(260%); } to { transform: translateX(-110%); } }
@media (prefers-reduced-motion: reduce) { .boot-bar > span { animation-duration: 2.4s; } }
/* HANDOFF §276: the intro plays above the loading screen from the page's first moments (public/intro-start.js) */
.boot-intro { position: fixed; inset: 0; z-index: 2100; background: #171614; }
.boot-intro-stage { position: absolute; inset: 0; }
.boot-intro-skip { position: absolute; bottom: calc(24px + env(safe-area-inset-bottom, 0px)); inset-inline-end: calc(24px + env(safe-area-inset-right, 0px)); min-height: 40px; padding: 8px 18px; border: 1px solid rgba(207, 200, 188, .35); border-radius: 10px; background: rgba(11, 10, 9, .55); color: #CFC9BE; font: 500 15px/1.2 -apple-system, "Segoe UI", Roboto, "Noto Sans Arabic", Tahoma, sans-serif; cursor: pointer; }
/* HANDOFF §282 — our own logo (the owner: «لوغونا ممنوع حدا يقرب عليه»): not dragged out, not selected, no long-press
   menu; the picture takes no pointer (a right-click lands on what holds it — no «save image» / «open image in a new
   tab»). boot.js stops the menu and the drag on the intro too. The files stay public: browsers, the stores and link
   previews need them — this closes the easy ways, not a determined copy. */
img[src^="/brand/"], .boot-intro { -webkit-user-drag: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
img[src^="/brand/"] { pointer-events: none; }
