/* AJY MAJY — MOBILE INTRO V1
   Isolated portrait scene. The existing 1672x941 intro stays completely untouched
   on desktop/tablet. ?mobile=1 forces the portrait preview on desktop. */
.mobile-intro{display:none}
html.ajy-mobile-intro .intro-viewport{display:none!important}
html.ajy-mobile-intro .mobile-intro{display:block;position:fixed;inset:0;background:#fff;overflow:hidden;isolation:isolate;z-index:5}
html.ajy-mobile-intro .mobile-intro__device{position:absolute;inset:0;overflow:hidden;background:#fff;touch-action:none}
html.ajy-mobile-intro .mobile-intro__stage{
  position:absolute;left:50%;top:50%;width:948px;height:1659px;
  transform:translate(-50%,-50%) scale(var(--mobile-stage-scale,1));
  transform-origin:50% 50%;visibility:hidden;overflow:visible;
  user-select:none;-webkit-user-select:none;isolation:isolate;
}
html.ajy-mobile-intro .mobile-intro__stage.is-fitted{visibility:visible}
.mobile-intro__camera{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform,filter}
.mobile-item{position:absolute;left:var(--mx);top:var(--my);width:var(--mw);z-index:var(--mz);height:auto;pointer-events:none;transform-origin:50% 50%;will-change:transform}
.mobile-item img{display:block;width:100%;max-width:none;height:auto;pointer-events:none;user-select:none;-webkit-user-drag:none}
.mobile-motion{width:100%;transform-origin:50% 65%}
.mobile-item--brand,.mobile-item--tagline,.mobile-item--enter-symbol{white-space:nowrap;text-align:center;line-height:1.1}
.mobile-intro__brand{margin:0;letter-spacing:-.038em;white-space:nowrap;font:500 118px/.95 "Cormorant Garamond",Georgia,serif;color:#050505;text-align:center;direction:ltr}
.mobile-intro__tagline{margin:0;font:600 30px/1.25 "Cinzel",Georgia,serif;letter-spacing:.245em;white-space:normal;text-align:center;color:#080808;direction:ltr}
body[data-lang="fa"] .mobile-intro__brand{font:500 112px/1.14 "Lalezar","Vazirmatn",sans-serif;letter-spacing:0;direction:rtl}
body[data-lang="fa"] .mobile-intro__tagline{font:500 34px/1.6 "Vazirmatn",sans-serif;letter-spacing:0;direction:rtl}
.mobile-intro__enter{border:0;padding:4px 4px;background:transparent;color:#0b0b0b;cursor:pointer;text-align:center;pointer-events:auto;font:500 28px/1.15 "Cinzel",serif;letter-spacing:.31em;text-indent:.31em;touch-action:manipulation;z-index:99}
body[data-lang="fa"] .mobile-intro__enter{font-family:"Vazirmatn",sans-serif;letter-spacing:0;text-indent:0}
.mobile-intro__enter:focus-visible,.mobile-intro__lang:focus-visible{outline:3px solid #111;outline-offset:5px}
.mobile-item--enter-symbol{font:400 45px/1 "Cormorant Garamond",serif;transform-origin:50% 50%}
.mobile-intro__lang{position:absolute;left:var(--mx);top:var(--my);width:var(--mw);z-index:89;display:grid;place-items:center;height:42px;pointer-events:auto;border-radius:50%;font:600 17px/1 "Cinzel",serif;letter-spacing:.03em;color:#171717;text-decoration:none;opacity:.8;touch-action:manipulation}
.mobile-intro__lang--en{}
.mobile-intro__lang--fa{font-family:"Vazirmatn",sans-serif;font-size:19px}
.mobile-intro__lang span{display:block;border-radius:50%;background:rgba(255,255,255,.82);padding:5px;line-height:1}
.mobile-intro__lang:active span{outline:1px solid #111}
.mobile-intro__reference,.mobile-intro__grid{position:absolute;inset:0;z-index:1000;pointer-events:none}
.mobile-intro__reference[hidden],.mobile-intro__grid[hidden]{display:none!important}
.mobile-intro__reference img{display:block;width:948px;height:1659px;opacity:.47;mix-blend-mode:multiply}
.mobile-intro__grid{background-image:linear-gradient(rgba(0,0,0,.085) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.085) 1px,transparent 1px);background-size:50px 50px}
html.ajy-mobile-intro .story-menu{z-index:1002;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right))}
html.ajy-mobile-intro .story-menu__rail{width:204px;height:auto;right:0;top:48px;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:7px 12px;background:rgba(255,255,255,.97);border:1px solid rgba(0,0,0,.24);box-shadow:0 7px 25px rgba(0,0,0,.06);clip-path:none;opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}
html.ajy-mobile-intro .story-menu__rail a{padding:11px 7px;line-height:1.4;font-size:11px;text-align:center}
html.ajy-mobile-intro .story-menu__dot{display:none}
html.ajy-mobile-intro .story-menu.is-open .story-menu__rail{opacity:1;transform:translateY(0);pointer-events:auto}
html.ajy-mobile-intro .story-menu.is-open .story-menu__toggle{transform:none}
html.ajy-mobile-intro body[data-tune="1"] .story-menu{display:none!important}
/* Static architectural drawings do not bob. Only living details breathe very subtly. */
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--bird .mobile-motion{animation:mobileBirdLife 7.7s ease-in-out infinite}
html.ajy-mobile-intro body:not([data-tune="1"]) [data-mobile-layer="bird-2"] .mobile-motion{animation-delay:-2.8s!important;animation-duration:6.9s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) [data-mobile-layer="bird-3"] .mobile-motion{animation-delay:-4s!important;animation-duration:9.4s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) [data-mobile-layer="bird-4"] .mobile-motion{animation-delay:-5s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--camel .mobile-motion{animation:mobileAnimalLife 11s ease-in-out infinite}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--peacock .mobile-motion{animation:mobileAnimalLife 9s ease-in-out infinite reverse}
html.ajy-mobile-intro body:not([data-tune="1"]) [data-mobile-layer="camel-right"] .mobile-motion{animation-delay:-5s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--guardian .mobile-motion{animation:mobileGuardianLife 9s ease-in-out infinite}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--moon .mobile-motion{animation:mobileMoonLife 24s ease-in-out infinite}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--enter-symbol{animation:mobileEnterLife 4.2s ease-in-out infinite}
@keyframes mobileBirdLife{0%,100%{transform:translate(0,0) rotate(0deg)}50%{transform:translate(4px,-6px) rotate(1.7deg)}}
@keyframes mobileAnimalLife{0%,100%{transform:translate(0,0) rotate(0deg)}48%{transform:translate(0,-2px) rotate(.2deg)}}
@keyframes mobileGuardianLife{0%,100%{transform:rotate(0)}50%{transform:rotate(.45deg)}}
@keyframes mobileMoonLife{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
@keyframes mobileEnterLife{0%,100%{translate:0 0}50%{translate:0 5px}}
html.ajy-mobile-intro body[data-tune="1"] .mobile-item.mobile-tune-selected{outline:2px dashed #a81515;outline-offset:5px;pointer-events:auto!important;cursor:move}
html.ajy-mobile-intro body[data-tune="1"] .mobile-item.mobile-tune-selected:before{content:attr(data-mobile-layer);position:absolute;left:0;top:-25px;font:17px/1.3 monospace;color:#a81515;background:#fff;z-index:1000}
html.ajy-mobile-intro body[data-tune="1"] .mobile-item img{pointer-events:none}
html.ajy-mobile-preview .mobile-intro__device{inset:auto!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%) scale(var(--mobile-preview-scale,1));width:var(--mobile-preview-width,390px)!important;height:var(--mobile-preview-height,844px)!important;border:1px solid rgba(0,0,0,.25);box-shadow:0 5px 44px rgba(0,0,0,.1)}
html.ajy-mobile-preview .mobile-intro{background:#f1f1f1}
html.ajy-mobile-preview .story-menu{right:calc(50% - (var(--mobile-preview-width,390px) / 2) + 14px)!important;top:calc(50% - (min(var(--mobile-preview-height,844px),100vh - 28px) / 2) + 14px)!important}
html.ajy-mobile-preview body[data-tune="1"] .ajy-global-credit{display:none!important}
@media(max-width:767px){.mobile-tune-panel{max-width:220px}.mobile-tune-panel__body{max-height:66vh;overflow:auto}}
@media(prefers-reduced-motion:reduce){.mobile-motion,.mobile-item--enter-symbol{animation:none!important}.mobile-intro__camera{filter:none!important}}
/* Editor is desktop-friendly and works on the physical phone too. */
.mobile-tune-panel{position:fixed;z-index:6000;left:14px;top:14px;width:292px;max-width:calc(100vw - 20px);background:rgba(255,255,255,.985);color:#111;border:1px solid #111;box-shadow:0 7px 26px rgba(0,0,0,.12);font:12px/1.35 ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr;user-select:none;touch-action:auto}
.mobile-tune-panel__head{display:flex;align-items:center;gap:6px;min-height:34px;padding:5px 7px;border-bottom:1px solid #bbb;cursor:grab}
.mobile-tune-panel__head strong{flex:1;font-size:12px;letter-spacing:.06em}
.mobile-tune-panel button,.mobile-tune-panel input,.mobile-tune-panel select{font:12px/1.3 ui-monospace,SFMono-Regular,Consolas,monospace;background:#fff;color:#111;border:1px solid #aaa;padding:5px;min-width:0}
.mobile-tune-panel button{cursor:pointer}.mobile-tune-panel button:hover{border-color:#111;background:#f4f4f4}
.mobile-tune-panel__head button{width:28px;height:25px;text-align:center;padding:2px}
.mobile-tune-panel__body{padding:10px;max-height:calc(100dvh - 68px);overflow:auto}
.mobile-tune-panel__body>label{display:grid;grid-template-columns:55px minmax(0,1fr);gap:7px;align-items:center;margin-bottom:7px}
.mobile-tune-panel__body>label select{width:100%}
.mobile-tune-panel__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.mobile-tune-panel__grid label{display:flex;gap:3px;align-items:center}
.mobile-tune-panel__grid label input{width:100%;max-width:100%}
.mobile-tune-panel__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:9px 0}
.mobile-tune-panel__wide{width:100%;margin:3px 0}
.mobile-tune-panel__primary{background:#171717!important;color:#fff!important;border-color:#171717!important}
.mobile-tune-panel__info{font-size:11px;line-height:1.55;color:#555;white-space:normal;margin:7px 0}
.mobile-tune-panel__status{font-size:11px;min-height:2.3em;padding:5px;border:1px solid #ddd;white-space:normal;line-height:1.4}
.mobile-tune-panel__status.is-error{color:#a00;border-color:#b44}
.mobile-tune-panel__body[hidden]{display:none!important}
.mobile-tune-panel.is-minimized{width:198px}
.mobile-tune-panel.is-minimized .mobile-tune-panel__head{border-bottom:0}

/* Text layers' Width control also changes their typography, unlike raster layers. */
.mobile-item--brand .mobile-intro__brand{font-size:calc(var(--mw) * .24686)}
.mobile-item--tagline .mobile-intro__tagline{font-size:calc(var(--mw) * .07538)}
.mobile-intro__enter{font-size:calc(var(--mw) * .1228)}
.mobile-item--enter-symbol{font-size:calc(var(--mw) * .75)}
/* Small hanging diamond below ENTER, echoing the supplied ink drawing. */
.mobile-item--enter-symbol::before{content:"";position:absolute;left:50%;top:-9px;width:1.8px;height:75px;background:#101010;transform:translateX(-50%);z-index:-1}
.mobile-item--enter-symbol::after{content:"";position:absolute;left:50%;top:29px;width:5px;height:5px;border-radius:50%;background:#101010;transform:translate(-50%,-50%)}

/* V2 — Phone detection, staged arrivals, more expressive living artwork.
   All transforms below are on INNER motion wrappers, never the tuned X/Y/W/Z
   holder. Desktop layers and existing desktop animations are unaffected. */
html.ajy-mobile-intro .mobile-intro.is-pending .mobile-item{visibility:hidden}
html.ajy-mobile-intro .mobile-intro.is-pending .mobile-intro__enter,
html.ajy-mobile-intro .mobile-intro.is-pending .mobile-intro__lang{pointer-events:none}
html.ajy-mobile-intro .mobile-intro.is-exiting .mobile-intro__enter,
html.ajy-mobile-intro .mobile-intro.is-exiting .mobile-intro__lang{pointer-events:none}

/* Fly across a small natural range rather than bob almost in place. */
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-1"] .mobile-motion{
  animation:ajyMobileFlyA 5.9s ease-in-out infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-2"] .mobile-motion{
  animation:ajyMobileFlyB 7.2s ease-in-out -3.1s infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-3"] .mobile-motion{
  animation:ajyMobileFlyC 6.3s ease-in-out -2.6s infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-4"] .mobile-motion{
  animation:ajyMobileFlyD 8.1s ease-in-out -5s infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--bird .mobile-motion img{
  animation:ajyMobileWing 1.4s ease-in-out infinite alternate;transform-origin:50% 64%;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-2"] img{animation-delay:-.35s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="bird-3"] img{animation-delay:-.8s!important}
@keyframes ajyMobileFlyA{0%,100%{transform:translate3d(-13px,3px,0) rotate(-4deg)}25%{transform:translate3d(4px,-13px,0) rotate(2deg)}56%{transform:translate3d(23px,-21px,0) rotate(5deg)}78%{transform:translate3d(7px,-10px,0) rotate(1deg)}}
@keyframes ajyMobileFlyB{0%,100%{transform:translate3d(15px,2px,0) rotate(4deg)}27%{transform:translate3d(-2px,-16px,0) rotate(-2deg)}58%{transform:translate3d(-25px,-25px,0) rotate(-5deg)}82%{transform:translate3d(-7px,-9px,0) rotate(2deg)}}
@keyframes ajyMobileFlyC{0%,100%{transform:translate3d(-8px,4px,0) rotate(-3deg)}33%{transform:translate3d(13px,-14px,0) rotate(4deg)}67%{transform:translate3d(28px,-24px,0) rotate(7deg)}}
@keyframes ajyMobileFlyD{0%,100%{transform:translate3d(10px,4px,0) rotate(3deg)}29%{transform:translate3d(-9px,-16px,0) rotate(-2deg)}68%{transform:translate3d(-28px,-22px,0) rotate(-6deg)}}
@keyframes ajyMobileWing{0%{transform:scaleY(.965) rotate(-1deg)}100%{transform:scaleY(1.028) rotate(1deg)}}

/* Hanging decoration rotates from its TOP fixing point. Small pavilions
   sway independently; the distant moon makes a slow full revolution. */
html.ajy-mobile-intro .mobile-item--lantern .mobile-motion{transform-origin:50% 4%}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="object-1"] .mobile-motion{
  animation:ajyMobileLanternSwing 5.8s ease-in-out infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="object-2"] .mobile-motion{
  animation:ajyMobilePavilion 10s ease-in-out infinite!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="object-2-right"] .mobile-motion{
  animation:ajyMobilePavilion 10s ease-in-out -5s infinite reverse!important;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--moon .mobile-motion{
  animation:ajyMobileMoonOrbit 62s linear infinite!important;
}
@keyframes ajyMobileLanternSwing{0%,100%{transform:rotate(-6deg)}22%{transform:rotate(5.8deg)}50%{transform:rotate(-3.7deg)}75%{transform:rotate(4.3deg)}}
@keyframes ajyMobilePavilion{0%,100%{transform:rotate(-.8deg) translateY(0)}50%{transform:rotate(.9deg) translateY(-2px)}}
@keyframes ajyMobileMoonOrbit{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* Gentle life in the foreground after the camels and peacocks arrive last. */
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--camel .mobile-motion{
  animation:ajyMobileCamelRest 8.5s ease-in-out infinite!important;transform-origin:50% 87%;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="camel-right"] .mobile-motion{animation-delay:-4.25s!important}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item--peacock .mobile-motion{
  animation:ajyMobilePeacockRest 10.2s ease-in-out infinite!important;transform-origin:50% 84%;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready [data-mobile-layer="peacock-right"] .mobile-motion{animation-delay:-5.1s!important}
@keyframes ajyMobileCamelRest{0%,100%{transform:translateY(0) rotate(-.25deg)}28%{transform:translateY(-2.4px) rotate(.45deg)}62%{transform:translateY(0) rotate(-.15deg)}}
@keyframes ajyMobilePeacockRest{0%,100%{transform:translateY(0) rotate(-.45deg)}51%{transform:translateY(-3px) rotate(.75deg)}}

/* Typography breathes slightly once the dedicated entrance animation ends. */
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__brand{
  animation:ajyMobileBrandRest 12s ease-in-out infinite;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__tagline{
  animation:ajyMobileTaglineRest 9s ease-in-out infinite;
}
@keyframes ajyMobileBrandRest{0%,100%{transform:translateY(0);letter-spacing:-.038em}50%{transform:translateY(-1.8px);letter-spacing:-.035em}}
@keyframes ajyMobileTaglineRest{0%,100%{transform:translateY(0);opacity:.9}50%{transform:translateY(-2px);opacity:1}}

/* Clear EN/FA touch targets with a restrained breathing ink-and-paper halo. */
html.ajy-mobile-intro .mobile-intro__lang{overflow:visible;opacity:1}
html.ajy-mobile-intro .mobile-intro__lang span{
  position:relative;z-index:1;isolation:isolate;
  display:grid;place-items:center;min-width:41px;min-height:41px;
  padding:7px 10px;border:1px solid rgba(0,0,0,.52);
  border-radius:50%;background:rgba(255,255,255,.95);
  box-shadow:0 0 0 3px rgba(255,255,255,.78),0 2px 11px rgba(0,0,0,.15);
  transition:transform .22s ease,border-color .22s ease,background .22s ease;
}
html.ajy-mobile-intro .mobile-intro__lang span::before{
  content:"";position:absolute;inset:-12px;z-index:-1;border-radius:50%;
  border:1px solid rgba(0,0,0,.2);background:radial-gradient(circle,rgba(255,255,255,.92),rgba(255,255,255,0) 72%);
  pointer-events:none;
}
html.ajy-mobile-intro .mobile-intro__lang[aria-current="page"] span{border-width:2px}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__lang span::before{
  animation:ajyMobileLangHalo 4.8s ease-in-out infinite;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__lang--fa span::before{animation-delay:-2.4s}
html.ajy-mobile-intro .mobile-intro__lang:focus-visible span,
html.ajy-mobile-intro .mobile-intro__lang:hover span,
html.ajy-mobile-intro .mobile-intro__lang:active span{transform:scale(1.12);background:#fff}
@keyframes ajyMobileLangHalo{0%,100%{opacity:.28;transform:scale(.89);box-shadow:0 0 1px rgba(0,0,0,0)}52%{opacity:.9;transform:scale(1.19);box-shadow:0 0 15px rgba(0,0,0,.1)}}

html.ajy-mobile-intro .mobile-intro__enter{isolation:isolate;transition:letter-spacing .24s ease,text-shadow .24s ease}
html.ajy-mobile-intro .mobile-intro__enter::after{
  content:"";position:absolute;left:29%;right:29%;height:1px;bottom:0;
  background:currentColor;opacity:.28;transform-origin:50% 50%;pointer-events:none;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__enter::after{
  animation:ajyMobileEnterUnderline 3.8s ease-in-out infinite;
}
html.ajy-mobile-intro .mobile-intro__enter:hover,
html.ajy-mobile-intro .mobile-intro__enter:focus-visible{text-shadow:0 1px 5px rgba(0,0,0,.2)}
@keyframes ajyMobileEnterUnderline{0%,100%{opacity:.19;transform:scaleX(.45)}50%{opacity:.7;transform:scaleX(1.15)}}

/* Keep editing static and exact: no animated offsets inside the mobile tuner. */
html.ajy-mobile-intro body[data-tune="1"] .mobile-intro__lang span::before,
html.ajy-mobile-intro body[data-tune="1"] .mobile-item .mobile-motion,
html.ajy-mobile-intro body[data-tune="1"] .mobile-intro__brand,
html.ajy-mobile-intro body[data-tune="1"] .mobile-intro__tagline,
html.ajy-mobile-intro body[data-tune="1"] .mobile-intro__enter::after{animation:none!important}
@media(prefers-reduced-motion:reduce){
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-item .mobile-motion,
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-item .mobile-motion img,
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-intro__brand,
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-intro__tagline,
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-intro__lang span::before,
  html.ajy-mobile-intro .mobile-intro.is-ready .mobile-intro__enter::after{animation:none!important}
}
/* Physical-phone readability: these are scaled with the 948px artboard. */
html.ajy-mobile-intro .mobile-intro__lang{font-size:27px}
html.ajy-mobile-intro .mobile-intro__lang--fa{font-size:29px}
html.ajy-mobile-intro .mobile-intro__lang span{min-width:72px;min-height:72px;padding:10px 12px}
@media(prefers-reduced-motion:reduce){
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item .mobile-motion,
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-item .mobile-motion img,
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__brand,
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__tagline,
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__lang span::before,
 html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__enter::after{animation:none!important}
}


/* AJY MAJY — MOBILE INTRO V3 (phone-to-Tune parity + real full-bleed viewport) */
@supports (height:100dvh) {
  html.ajy-mobile-intro,html.ajy-mobile-intro body{height:100dvh;min-height:100dvh}
  html.ajy-mobile-intro .mobile-intro{inset:0 auto auto 0;width:100%;height:100dvh}
}
html.ajy-mobile-intro,html.ajy-mobile-intro body{
  padding:0!important;margin:0!important;overflow:hidden!important;
  overscroll-behavior:none;overscroll-behavior-y:none;
}
html.ajy-mobile-intro .mobile-intro__device{
  width:100%;height:100%;inset:0;display:block;border:0;border-radius:0;
  box-shadow:none;clip-path:none;margin:0;padding:0;
  overflow:hidden;-webkit-overflow-scrolling:auto;
}
html.ajy-mobile-intro .mobile-intro__stage{
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  -webkit-transform:translate3d(-50%,-50%,0) scale(var(--mobile-stage-scale,1));
  transform:translate3d(-50%,-50%,0) scale(var(--mobile-stage-scale,1));
}
html.ajy-mobile-intro .mobile-intro__camera{
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  transform:translate3d(0,0,0);
}
html.ajy-mobile-intro .mobile-intro__stage.is-fitted{visibility:visible}
/* On the real phone use the complete usable screen; on desktop preview
   keep the *full selected phone dimensions* and shrink its frame uniformly.
   Previously max-height shortened the virtual phone, changing its aspect ratio. */
html.ajy-mobile-preview .mobile-intro__device{
  inset:auto!important;left:50%!important;top:50%!important;
  width:var(--mobile-preview-width,390px)!important;
  height:var(--mobile-preview-height,844px)!important;
  max-height:none!important;max-width:none!important;
  transform:translate3d(-50%,-50%,0) scale(var(--mobile-preview-scale,1))!important;
  transform-origin:center center;
  border:1px solid rgba(0,0,0,.24)!important;
  box-shadow:0 5px 44px rgba(0,0,0,.10)!important;
}
html.ajy-mobile-preview .story-menu{
  right:calc(50% - var(--mobile-preview-width,390px) * var(--mobile-preview-scale,1) / 2 + 14px)!important;
  top:calc(50% - var(--mobile-preview-height,844px) * var(--mobile-preview-scale,1) / 2 + 14px)!important;
}
/* No fade-in/fade-out: the camera and each drawing physically moves through
   space. JS animates transform and visibility, not alpha. */
html.ajy-mobile-intro .mobile-intro.is-pending .mobile-item{visibility:hidden;opacity:1}
html.ajy-mobile-intro .mobile-intro.is-entering .mobile-item{opacity:1}
html.ajy-mobile-intro .mobile-intro.is-exiting .mobile-item{opacity:1}
/* Only physical tap targets get inset protection; artwork remains edge-to-edge. */
html.ajy-mobile-intro:not(.ajy-mobile-preview) .story-menu{
  right:max(12px,env(safe-area-inset-right));
  top:max(12px,env(safe-area-inset-top));
}

/* AJY MAJY — MOBILE INTRO V4: soft full-bleed framing and illustrated-language links.
   All coordinates and depth still come from the existing saved JSON file. */
html.ajy-mobile-intro .mobile-intro,
html.ajy-mobile-intro .mobile-intro__device{background:#fff!important;border:0!important}
html.ajy-mobile-preview .mobile-intro{background:#f1f1f1!important}
html.ajy-mobile-preview .mobile-intro__device{border:1px solid rgba(0,0,0,.24)!important}
/* Absolute stage zoom is determined by JS, the same for real phones and preview.
   Prevent subpixel white slivers on Safari when viewport chrome changes. */
html.ajy-mobile-intro:not(.ajy-mobile-preview) .mobile-intro__device{
  left:-1px!important;right:-1px!important;top:-1px!important;bottom:-1px!important;
  width:calc(100% + 2px)!important;height:calc(100% + 2px)!important;
}
html.ajy-mobile-intro .mobile-intro__stage{
  -webkit-transform:translate3d(-50%,-50%,0) scale(var(--mobile-stage-scale,1));
  transform:translate3d(-50%,-50%,0) scale(var(--mobile-stage-scale,1));
}
/* Emblem artwork: the exact EN/FA genies from the desktop's camel hover logos.
   The saved anchor and --mw width remain tuneable; the illustration extends from
   the anchor to create a comfortable physical touch target. */
html.ajy-mobile-intro .mobile-intro__lang{
  display:flex;align-items:center;justify-content:center;
  width:var(--mw);height:var(--mw);min-height:52px;
  padding:0;letter-spacing:normal;text-decoration:none;
  overflow:visible;opacity:1;isolation:isolate;
}
html.ajy-mobile-intro .mobile-intro__emblem{
  position:relative;flex:none;display:grid;place-items:center;
  width:max(100px,calc(var(--mw) * 1.75));
  height:max(100px,calc(var(--mw) * 1.75));
  border-radius:50%;border:1px solid rgba(0,0,0,.32);
  background:radial-gradient(circle,rgba(255,255,255,.98) 0%,rgba(255,255,255,.98) 63%,rgba(255,255,255,.8) 86%,rgba(255,255,255,.06) 100%);
  box-shadow:0 0 0 4px rgba(255,255,255,.8),0 3px 13px rgba(0,0,0,.09);
  transition:transform .5s cubic-bezier(.17,.7,.26,1),box-shadow .5s ease;
  pointer-events:auto;
}
html.ajy-mobile-intro .mobile-intro__emblem::before{
  content:'';position:absolute;inset:-13px;border-radius:50%;z-index:-1;pointer-events:none;
  background:radial-gradient(circle,rgba(255,255,255,.92) 10%,rgba(245,244,231,.78) 42%,rgba(0,0,0,.035) 69%,transparent 76%);
  box-shadow:0 0 16px 5px rgba(248,239,192,.4);
}
html.ajy-mobile-intro .mobile-intro__emblem img{
  width:86%!important;height:86%!important;max-width:86%;object-fit:contain;display:block;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.12));
}
html.ajy-mobile-intro .mobile-intro__lang[aria-current="page"] .mobile-intro__emblem{border-color:rgba(0,0,0,.7)}
html.ajy-mobile-intro .mobile-intro__lang:is(:hover,:active,:focus-visible) .mobile-intro__emblem{
  transform:scale(1.11);box-shadow:0 0 0 5px rgba(255,255,255,.9),0 1px 25px rgba(0,0,0,.18);
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__emblem::before{
  animation:ajyMobileEmblemGlow 5.7s ease-in-out infinite;
}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__lang--fa .mobile-intro__emblem::before{animation-delay:-2.85s}
@keyframes ajyMobileEmblemGlow{
  0%,100%{transform:scale(.94);opacity:.45}
  50%{transform:scale(1.14);opacity:.95}
}
html.ajy-mobile-intro body[data-tune="1"] .mobile-intro__emblem::before{animation:none!important}
/* The typography only breathes after its delayed, smoke-like reveal. */
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__brand{animation:ajyMobileBrandRest 13s ease-in-out infinite}
html.ajy-mobile-intro body:not([data-tune="1"]) .mobile-intro.is-ready .mobile-intro__tagline{animation:ajyMobileTaglineRest 11s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){
 html.ajy-mobile-intro .mobile-intro.is-ready .mobile-intro__emblem::before{animation:none!important}
}

/* Keep both genie emblems entirely inside narrow iPhone safe viewing bounds.
   Offsetting only the drawn emblem preserves the stored Tune X/Y coordinate. */
html.ajy-mobile-intro .mobile-intro__lang--en .mobile-intro__emblem{transform:translateX(40px) scale(1)}
html.ajy-mobile-intro .mobile-intro__lang--fa .mobile-intro__emblem{transform:translateX(-40px) scale(1)}
html.ajy-mobile-intro .mobile-intro__lang--en:is(:hover,:active,:focus-visible) .mobile-intro__emblem{transform:translateX(40px) scale(1.11)}
html.ajy-mobile-intro .mobile-intro__lang--fa:is(:hover,:active,:focus-visible) .mobile-intro__emblem{transform:translateX(-40px) scale(1.11)}

/* Mobile profile editor preview: retain logical phone dimensions and scale the whole shell, never shorten its height. */
html.ajy-mobile-preview .mobile-intro__device{max-height:none!important;transform:translate(-50%,-50%) scale(var(--mobile-preview-scale,1))!important;transform-origin:50% 50%}

/* Mobile Tune: selected layer can be grabbed without changing saved Z. */
html.ajy-mobile-intro body[data-tune="1"] .mobile-item.mobile-tune-selected{z-index:998!important}
