/* Preserve the original desktop composition at one uniform zoom, including
   on touch laptops. Use virtual scene units so viewport units are not scaled
   twice. Compact phone landscape and portrait rotation remain in Mobile.css. */
@media (orientation:landscape) and (min-width:1101px), (orientation:landscape) and (min-height:601px), (orientation:portrait) and (min-width:1101px) {
  body.at-prototype.sanctuary{--scene-edge:clamp(68px,calc(var(--sanctuary-width,1920px) * .08),160px);--scene-right:clamp(76px,calc(var(--sanctuary-width,1920px) * .06),116px);overflow:hidden}
  .sanctuary .at-hero.sanctuary-scene{zoom:var(--sanctuary-scale,1);width:var(--sanctuary-width,100vw);height:var(--sanctuary-height,100dvh);min-height:0;padding:0}
  .sanctuary .at-toolbar{zoom:var(--sanctuary-scale,1);width:var(--sanctuary-width,100vw);height:84px;padding:0 var(--scene-edge)}
  .sanctuary .at-back{font-size:12px}
  .sanctuary .sanctuary-character-wrap{inset:8% 11% 10% 34%;height:auto}
  .sanctuary .sanctuary-shade{background:linear-gradient(90deg,#050d16f2 0%,#07121dbb 24%,#07111b55 42%,transparent 63%,#070e1722 85%,#070e1970 100%),linear-gradient(0deg,#050b14dc 0%,#08111b60 14%,transparent 36%,#050c1920 100%)}
  .at-prototype.sanctuary #codex-detail-identity.at-hero-copy{position:absolute;inset:19% auto auto var(--scene-edge);width:580px;max-width:none;margin:0;padding:0;overflow:visible}
  .sanctuary #at-title{font-size:12px}
  .at-prototype.sanctuary #codex-name{font-size:70px}
  .sanctuary .sanctuary-name-line{gap:15px;margin-bottom:20px}
  .sanctuary .at-tags{font-size:13px;margin-bottom:21px}
  .sanctuary #sanctuary-stats{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;gap:18px 28px;padding:0;margin-bottom:26px}
  .sanctuary .sanctuary-stat{grid-template-columns:44px minmax(0,1fr);gap:0 10px;padding-bottom:11px}
  .sanctuary #sanctuary-stats .sanctuary-stat-icon{width:44px;height:44px}
  .sanctuary .sanctuary-stat-copy>span{font-size:12px}
  .sanctuary #sanctuary-stats .sanctuary-stat-copy strong{font-size:28px}
  .sanctuary .sanctuary-arsenal{margin-bottom:30px}
  .sanctuary #sanctuary-abilities{width:100%;justify-content:space-between;gap:12px}
  .sanctuary .sanctuary-ability{width:78px;height:78px}
  .sanctuary .sanctuary-looks{width:580px;max-width:none}
  .sanctuary .sanctuary-look-heading{margin-bottom:10px}
  .sanctuary #sanctuary-skin-rail{height:150px}
  .sanctuary .sanctuary-skin-portrait{width:160px;height:102px}
  .sanctuary .sanctuary-skin-portrait.is-current{width:200px;height:143px}
  .sanctuary .sanctuary-look-caption{margin-top:7px}
  .sanctuary .sanctuary-dock{position:absolute;inset:45% var(--scene-right) auto auto;display:flex;flex-direction:column;transform:translateY(-50%);gap:10px;padding:0;border:0;background:none;backdrop-filter:none}
  .sanctuary .sanctuary-dock button{width:91px;min-height:83px;border:1px solid #d5bd7a45;background:linear-gradient(145deg,#1a2e3a99,#081522b0)}
  .sanctuary .sanctuary-dock .sanctuary-insignia{width:47px;height:47px}
  .sanctuary .sanctuary-dock span{font-size:9px}
  .sanctuary .sanctuary-progress{position:absolute;inset:auto var(--scene-right) 65px auto;width:310px;max-width:none;margin:0;padding:15px 17px;gap:14px}
  .sanctuary .sanctuary-progress-badge{width:52px;height:60px}
  .sanctuary .sanctuary-bottom{bottom:23px;right:var(--scene-right)}
  /* Previous lives in the toolbar; next lives inside the scaled scene. */
  .sanctuary #at-prev{position:fixed;top:calc(var(--sanctuary-height,100dvh) * .51)}
  .sanctuary .sanctuary-next{position:absolute;top:51%}
  .sanctuary #at-prev,.sanctuary .sanctuary-next{width:64px;height:94px}
  .sanctuary #at-prev{left:22px}
  .sanctuary .sanctuary-next{left:auto;right:20px}
  .sanctuary #at-prev>span,.sanctuary .sanctuary-next>span{font-size:85px}
}

/* Laptop readability: keep UI in CSS pixels instead of shrinking it with the
   1080px scene. Full-height desktop monitors retain the composition above.
   Short windows scroll only the identity column when a long hero name needs
   extra space; the artwork and panel navigation stay in view. */
@media (orientation:landscape) and (min-width:1101px) and (max-height:960px),
       (orientation:landscape) and (min-width:1101px) and (max-width:1600px) {
  body.at-prototype.sanctuary{
    --scene-edge:clamp(72px,6vw,116px);
    --scene-right:clamp(72px,5vw,96px);
  }
  .sanctuary .at-hero.sanctuary-scene{zoom:1;width:100vw;height:100dvh}
  .sanctuary .at-toolbar{zoom:1;width:100vw;height:64px}
  .sanctuary .at-back{font-size:14px;min-height:44px;display:flex;align-items:center;letter-spacing:.06em}
  .at-prototype.sanctuary #codex-detail-identity.at-hero-copy{
    inset:clamp(68px,11dvh,108px) auto 24px var(--scene-edge);
    width:clamp(440px,31vw,580px);max-width:43vw;
    overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;
    scrollbar-color:#b8a27370 transparent;
    padding:4px 6px 8px;
  }
  .sanctuary #at-title{font-size:14px;line-height:1.5;letter-spacing:.08em;margin-bottom:6px}
  .at-prototype.sanctuary #codex-name{font-size:clamp(48px,3.65vw,64px)}
  .sanctuary .sanctuary-name-line{margin-bottom:clamp(10px,1.6dvh,18px)}
  .sanctuary .at-tags{font-size:14px;margin-bottom:clamp(12px,2dvh,20px)}
  .sanctuary #sanctuary-stats{gap:clamp(12px,1.8dvh,18px) 24px;margin-bottom:clamp(16px,2.4dvh,26px)}
  .sanctuary .sanctuary-stat{grid-template-columns:40px minmax(0,1fr);padding-bottom:9px}
  .sanctuary #sanctuary-stats .sanctuary-stat-icon{width:40px;height:40px}
  .sanctuary .sanctuary-stat-copy>span{font-size:14px}
  .sanctuary #sanctuary-stats .sanctuary-stat-copy strong{font-size:28px}
  .sanctuary .sanctuary-arsenal{margin-bottom:clamp(16px,2.5dvh,28px)}
  .sanctuary .sanctuary-ability{width:clamp(64px,4.1vw,78px);height:clamp(64px,4.1vw,78px);flex-shrink:0}
  .sanctuary .sanctuary-ability>span{font-size:12px}
  .sanctuary .sanctuary-looks{width:100%;max-width:100%}
  .sanctuary .sanctuary-look-heading{margin-bottom:6px}
  .sanctuary .sanctuary-look-heading p{font-size:12px;letter-spacing:.12em}
  .sanctuary .sanctuary-look-heading>button{font-size:12px;min-height:32px}
  .sanctuary #sanctuary-skin-rail{height:clamp(110px,16dvh,150px)}
  .sanctuary .sanctuary-skin-portrait{width:clamp(110px,8vw,160px);height:clamp(72px,10.5dvh,102px)}
  .sanctuary .sanctuary-skin-portrait.is-current{width:clamp(150px,10.5vw,200px);height:clamp(104px,15dvh,143px)}
  .sanctuary .sanctuary-skin-carousel>button{width:28px;min-height:44px}
  .sanctuary .sanctuary-look-caption{margin-top:4px;min-height:32px}
  .sanctuary .sanctuary-look-caption>span,.sanctuary .sanctuary-art-link{font-size:12px}
  .sanctuary .sanctuary-art-link{min-height:32px}
  .sanctuary .sanctuary-dock{top:44%;gap:6px}
  .sanctuary .sanctuary-dock button{width:116px;min-height:clamp(62px,9dvh,86px);padding:5px 4px;gap:3px}
  .sanctuary .sanctuary-dock .sanctuary-insignia{width:clamp(32px,4.8dvh,47px);height:clamp(32px,4.8dvh,47px)}
  .sanctuary .sanctuary-dock span{font-size:12px;letter-spacing:.03em}
  .sanctuary .sanctuary-progress{bottom:48px;width:340px;padding:12px 14px;gap:12px}
  .sanctuary .sanctuary-progress-badge{width:48px;height:56px}
  .sanctuary .sanctuary-progress-copy small{font-size:11px;letter-spacing:.12em}
  .sanctuary .sanctuary-progress-copy strong{font-size:12px}
  .sanctuary .sanctuary-progress-copy>span:not(.sanctuary-meter){font-size:12px}
  .sanctuary .sanctuary-bottom{bottom:12px}
  .sanctuary .sanctuary-bottom button{font-size:12px;min-height:32px}
  .sanctuary #at-prev{top:51%;left:8px}
  .sanctuary .sanctuary-next{right:8px}
  .sanctuary #at-prev small,.sanctuary .sanctuary-next small{font-size:12px}
}
@media (orientation:landscape) and (min-width:1101px) and (max-height:720px) {
  .sanctuary .sanctuary-name-line{margin-bottom:8px}
  .sanctuary .at-tags{margin-bottom:10px}
  .sanctuary #sanctuary-stats{gap:10px 24px;margin-bottom:14px}
  .sanctuary .sanctuary-stat{padding-bottom:7px}
  .sanctuary .sanctuary-arsenal{margin-bottom:12px}
  .sanctuary .sanctuary-look-heading>button,.sanctuary .sanctuary-art-link{min-height:28px}
  .sanctuary #sanctuary-skin-rail{height:104px}
  .sanctuary .sanctuary-skin-portrait.is-current{height:98px}
  .sanctuary .sanctuary-look-caption{min-height:28px}
  .sanctuary .sanctuary-dock{top:39%}
}
@media (orientation:landscape) and (min-width:1101px) and (max-height:600px) {
  .sanctuary .sanctuary-dock{display:grid;grid-template-columns:repeat(2,116px);top:40%;gap:6px}
}
