/* v0.57 — independent compact/mobile information architecture.
   Desktop remains governed by the approved v0.56 presentation. */
.mobile-control-console,
.mobile-hero-brand-name,
.mobile-hero-slogan,
.mobile-hero-status,
.mobile-member-quick,
.mobile-member-role,
.mobile-member-tag,
.mobile-place-strip,
.mobile-map-detail-toggle {
  display: none;
}

@media (max-width: 1024px) {
  .section { padding-top: 58px; }
  .section-head { margin-bottom: 18px; }
  .section-head h2 { font-size: clamp(25px, 4.2vw, 34px); }
  .page-shell { width: min(100% - 34px, 1420px); }
}

@media (max-width: 820px) {
  :root { --fsa-header-height: 52px !important; }
  html {
    width: 100%;
    max-width: 100%;
    overflow-x: clip;
    scroll-padding-top: 66px;
  }
  body {
    width: 100%;
    max-width: 100%;
    padding-top: 52px !important;
    padding-bottom: 72px;
    overflow-x: clip;
  }
  html.fsa-menu-open,
  body.fsa-menu-open { overflow: hidden !important; }
  .page-shell { width: calc(100% - 32px); }
  .panel { border-radius: 4px; }
  .section {
    padding-top: 48px;
    scroll-margin-top: 66px !important;
  }
  .section + .section { padding-top: 44px; }
  .section-head {
    min-width: 0;
    margin-bottom: 14px;
    gap: 10px;
    align-items: end;
  }
  .section-head h2 {
    margin-top: 3px;
    font-size: clamp(23px, 6.5vw, 29px);
    line-height: 1.05;
  }
  .section-head > p,
  .section-head > a { max-width: 46%; font-size: 11px; line-height: 1.35; }
  .micro { font-size: 9px; letter-spacing: .14em; }

  /* One-line top utility bar; the full route list lives in the drawer. */
  .site-header {
    height: 52px !important;
    min-height: 52px !important;
  }
  .site-header .nav-shell {
    width: calc(100% - 20px) !important;
    min-height: 52px !important;
    height: 52px !important;
    margin: 0 auto !important;
  }
  .site-header .site-brand {
    width: calc(100% - 176px) !important;
    max-width: calc(100% - 176px) !important;
  }
  .site-header .site-brand strong { gap: 3px; font-size: 12px !important; }
  .site-header .site-brand .brand-en { display: none !important; }
  .site-header .site-brand small { font-size: 6px !important; letter-spacing: .04em; }
  .site-header .desktop-nav,
  .site-header .header-socials,
  .site-header .mobile-socials > .social-link { display: none !important; }
  .site-header .mobile-socials {
    display: block !important;
    position: static !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .site-header .mobile-language-row {
    display: block !important;
    position: fixed !important;
    z-index: 1540 !important;
    top: 9px !important;
    right: 55px !important;
    width: 118px !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .site-header .mobile-language-row .language-switcher {
    width: 118px !important;
    min-width: 118px !important;
    height: 34px !important;
  }
  .site-header .mobile-language-row .language-switcher a {
    min-height: 32px !important;
    height: 32px !important;
    margin-left: -4px;
    font-size: 10px !important;
  }
  .site-header .menu-toggle {
    display: grid !important;
    position: fixed !important;
    z-index: 1550 !important;
    top: 6px !important;
    right: 8px !important;
    width: 40px !important;
    height: 40px !important;
    margin: 0 !important;
    padding: 10px !important;
    border: 1px solid #ff8a34 !important;
    border-radius: 50% !important;
    background: #071018f5 !important;
    grid-template-rows: repeat(3, 2px) !important;
    align-content: center;
    gap: 4px !important;
  }
  .site-header .menu-toggle::after { content: none !important; }
  .site-header .menu-toggle span { width: 18px; height: 2px; }
  .site-header .mobile-menu {
    display: block !important;
    visibility: hidden;
    opacity: 0;
    position: fixed !important;
    z-index: 1525 !important;
    top: 52px !important;
    right: 0 !important;
    width: min(320px, 86vw) !important;
    max-height: calc(100svh - 52px) !important;
    margin: 0 !important;
    padding: 10px !important;
    overflow-y: auto !important;
    border: 1px solid #ff914f6e !important;
    border-radius: 0 0 0 12px !important;
    background: #050d13fa !important;
    box-shadow: 0 24px 50px #000d;
    transform: translateX(102%) !important;
    transition: transform .2s ease, opacity .2s ease, visibility .2s ease;
  }
  .site-header .mobile-menu.open {
    visibility: visible;
    opacity: 1;
    transform: translateX(0) !important;
  }
  .site-header .mobile-menu nav {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 7px !important;
    width: 100% !important;
    max-height: none !important;
    padding: 0 !important;
    overflow: visible !important;
  }
  .site-header .mobile-menu nav a {
    min-width: 0;
    min-height: 48px;
    padding: 8px 10px;
    border: 1px solid #47718155;
    background: #0a151dde;
    display: grid !important;
    align-content: center;
    justify-items: start;
    gap: 3px;
  }
  .site-header .mobile-menu nav a span { font-size: 13px; line-height: 1; }
  .site-header .mobile-menu nav small { font-size: 7px; letter-spacing: .12em; }

  /* First screen: image-led agency identity plus a compact in-world status rail. */
  .hero {
    height: 72svh !important;
    min-height: 540px !important;
    max-height: 680px;
    overflow: hidden !important;
    display: block !important;
    background: #02070b !important;
  }
  .hero .hero-bg-video,
  .hero .hero-bg-poster,
  .hero [data-hero-carousel-media] {
    top: 0 !important;
    left: 50% !important;
    width: 150vw !important;
    height: auto !important;
    max-width: none !important;
    aspect-ratio: 16 / 9;
    object-fit: cover !important;
    object-position: center 32% !important;
    transform: translateX(-50%) !important;
  }
  .hero .hero-shade {
    background: linear-gradient(180deg, #0105090a 0%, #02070b66 32%, #02070bf6 60%, #02070b 100%) !important;
  }
  .hero .hero-inner {
    position: relative;
    z-index: 3;
    width: calc(100% - 32px) !important;
    height: 100%;
    min-height: 0 !important;
    padding: 0 0 13px !important;
    display: block !important;
  }
  .hero .hero-copy.panel {
    position: absolute;
    right: 0;
    bottom: 13px;
    left: 0;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    padding: 12px 13px 13px !important;
    border-top-width: 1px;
    display: flex;
    flex-direction: column;
    gap: 0;
    background: linear-gradient(145deg, #071018e8, #050c12f2) !important;
    backdrop-filter: blur(9px);
  }
  .hero-copy.panel::after {
    display: block !important;
    top: 6px;
    right: -2%;
    bottom: auto;
    width: 52%;
    height: 132px;
    opacity: .13;
  }
  .hero-logo { order: 1; width: 116px !important; margin: 0 0 3px !important; }
  .hero-copy > .micro { order: 2; margin: 0 !important; }
  .hero-copy .fsa-wordmark,
  .hero-copy .fsa-seo-title { display: none !important; }
  .mobile-hero-brand-name {
    order: 3;
    display: block;
    margin-top: 3px;
    color: #f5f7f7;
    font-size: 15px;
    font-weight: 900;
    letter-spacing: .08em;
  }
  .hero-copy .hero-subtitle {
    order: 4;
    margin: 5px 0 3px !important;
    font-size: clamp(34px, 9.5vw, 43px) !important;
    line-height: .9 !important;
    letter-spacing: -.045em !important;
  }
  .hero-copy > p:not(.micro):not(.mobile-hero-slogan):not(.fsa-wordmark) {
    order: 5;
    display: block !important;
    margin: 4px 0 0 !important;
    overflow: visible !important;
    color: #c7d3d7;
    font-size: 11px !important;
    line-height: 1.42 !important;
    text-overflow: clip !important;
    white-space: normal !important;
  }
  .mobile-hero-slogan {
    order: 6;
    display: block;
    margin: 4px 0 8px;
    color: #ff985c;
    font-size: 13px;
    font-weight: 850;
    letter-spacing: .04em;
  }
  .mobile-hero-status {
    order: 7;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 34px;
    padding: 6px 9px;
    border: 1px solid #5c87945e;
    background: #031017c7;
  }
  .mobile-hero-status strong { color: #f2f7f8; font-size: 11px; }
  .mobile-hero-status span { color: #91aab3; font-size: 8px; text-align: right; }
  .hero-actions { order: 8; margin: 8px 0 0 !important; }
  .hero-actions .primary {
    width: 100%;
    min-height: 38px !important;
    padding: 0 13px !important;
    font-size: 12px !important;
  }
  .hero-actions .secondary { display: none !important; }
  .mobile-member-quick {
    order: 9;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
    margin-top: 7px;
  }
  .mobile-member-quick a {
    min-width: 0;
    min-height: 36px;
    padding: 4px;
    border: 1px solid #ff89465e;
    color: #f6f3f1;
    background: #140e0ccf;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 13px;
    font-weight: 850;
  }
  .mobile-member-quick small { color: #ff8847; font-size: 7px; letter-spacing: .06em; }
  .hero .hero-side { display: none !important; }

  /* The phone's primary navigation surface: 3 × 2, short labels only. */
  .mobile-control-console {
    display: block;
    padding-top: 18px;
    scroll-margin-top: 66px;
  }
  .mobile-console-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
  }
  .mobile-console-head h2 { margin: 2px 0 0; font-size: 22px; line-height: 1.05; }
  .mobile-console-head > a { color: #ff8c50; font-size: 10px; white-space: nowrap; }
  .mobile-console-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }
  .mobile-console-card {
    min-width: 0;
    min-height: 76px;
    padding: 9px 8px;
    border: 1px solid #496e7a58;
    color: #eef5f6;
    background: linear-gradient(145deg, #0b1820e8, #071017f0);
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
    align-content: center;
    gap: 3px 7px;
    box-shadow: inset 0 1px 0 #ffffff08;
  }
  .mobile-console-card i {
    grid-row: 1 / 3;
    width: 26px;
    height: 26px;
    border: 1px solid #ff8b4f75;
    color: #ff955e;
    display: grid;
    place-items: center;
    font-size: 9px;
    font-style: normal;
    font-weight: 900;
  }
  .mobile-console-card strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 11px;
  }
  .mobile-console-card small {
    min-width: 0;
    overflow: hidden;
    color: #72909c;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 8px;
    letter-spacing: .04em;
  }

  /* Four files in one compact 2 × 2 reading unit. */
  #team { padding-top: 44px !important; }
  #team::before {
    top: 94px !important;
    height: 206px !important;
    opacity: .92 !important;
  }
  #team .team-marquee {
    top: 94px !important;
    height: 206px !important;
  }
  #team .team-marquee-track span { font-size: clamp(58px, 19vw, 108px); opacity: .72; }
  #team .team-grid {
    width: 100% !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }
  #team .team-card {
    position: relative;
    min-width: 0;
    min-height: 0 !important;
    height: auto !important;
    overflow: hidden;
    cursor: pointer;
    display: block !important;
  }
  #team .team-card:focus-visible { outline: 2px solid #ff8b4f; outline-offset: 2px; }
  #team .team-photo {
    width: 100%;
    height: auto !important;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    display: block;
  }
  #team .team-photo img { width: 100%; height: 100%; object-fit: cover; }
  #team .team-card:nth-child(1) .team-photo img { object-position: 42% 35% !important; }
  #team .team-card:nth-child(2) .team-photo img { object-position: 50% 32% !important; }
  #team .team-card:nth-child(3) .team-photo img { object-position: 50% 28% !important; }
  #team .team-card:nth-child(4) .team-photo img { object-position: 52% 28% !important; }
  #team .team-copy { min-height: 94px !important; padding: 9px 10px 10px !important; }
  #team .team-status {
    position: absolute;
    z-index: 3;
    top: 7px;
    right: 7px;
    margin: 0;
    padding: 4px 6px;
    border: 1px solid #ffffff29;
    background: #061018d9;
  }
  #team .team-status span { font-size: 7px; }
  #team .team-copy > .micro,
  #team .team-copy > p:not(.mobile-member-role),
  #team .theme-player,
  #team .team-tap-hint { display: none !important; }
  #team .team-copy h3 { margin: 0 0 3px !important; font-size: 19px !important; line-height: 1; }
  #team .team-copy h3 b { margin-left: 5px; font-size: 13px !important; }
  .mobile-member-role {
    display: block;
    min-height: 28px;
    margin: 0 !important;
    color: #dce8eb !important;
    font-size: 10px !important;
    font-weight: 750;
    line-height: 1.3 !important;
  }
  .mobile-member-tag {
    display: inline-block;
    margin-top: 3px;
    color: #ff985f;
    font-size: 8px;
    letter-spacing: .06em;
  }
  #team .team-file-link { display: block; margin-top: 5px; font-size: 9px; }

  /* VLOG and field records share a large 16:9 focus with a horizontal selector. */
  .life-vlog-layout,
  .records-grid { display: grid !important; grid-template-columns: 1fr !important; gap: 10px !important; }
  .records-grid > .record-screen { display: block !important; }
  .life-feature,
  .record-screen,
  .record-screen video {
    width: 100%;
    height: auto !important;
    aspect-ratio: 16 / 9 !important;
  }
  .life-feature-copy { padding: 12px !important; }
  .life-feature-copy h3 { margin: 4px 0 !important; font-size: 20px !important; }
  .life-feature-copy > p:not(.micro) { max-width: 90%; font-size: 11px; line-height: 1.35; }
  .life-log-list,
  .record-list,
  .mobile-place-strip {
    display: flex !important;
    gap: 9px !important;
    width: 100%;
    max-width: 100%;
    padding: 1px 0 8px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }
  .life-log-card,
  .record-list > button {
    flex: 0 0 clamp(210px, 66vw, 300px) !important;
    min-width: 0 !important;
    min-height: 86px !important;
    scroll-snap-align: start;
  }
  .life-log-card { grid-template-columns: 88px minmax(0, 1fr) !important; }
  .life-log-card img { width: 88px !important; height: 84px !important; object-fit: cover; }
  .life-log-card > div { padding: 9px !important; }
  .record-list > button { grid-template-columns: 92px minmax(0, 1fr) !important; }
  .record-list > button img { width: 92px !important; height: 84px !important; object-fit: cover; }
  .record-list-inline { display: none !important; }

  /* One highlighted case followed by compact, touch-expandable archive rows. */
  #cases .case-grid { display: grid !important; grid-template-columns: 1fr !important; gap: 9px !important; }
  #cases .case-card {
    min-height: 0 !important;
    cursor: pointer;
    touch-action: manipulation;
  }
  #cases .case-card.is-mobile-featured { display: block !important; }
  #cases .case-card.is-mobile-featured .case-media { width: 100%; height: auto !important; min-height: 0; aspect-ratio: 16 / 9 !important; }
  #cases .case-card.is-mobile-featured > div:last-child { padding: 13px !important; }
  #cases .case-card.is-mobile-featured h3 { margin: 5px 0 !important; font-size: 21px !important; }
  #cases .case-card:not(.is-mobile-featured) {
    display: grid !important;
    grid-template-columns: 104px minmax(0, 1fr) !important;
    min-height: 96px !important;
  }
  #cases .case-card:not(.is-mobile-featured) .case-media {
    width: 104px;
    height: 100% !important;
    min-height: 96px;
    aspect-ratio: auto !important;
  }
  #cases .case-card:not(.is-mobile-featured) .case-media img { width: 100%; height: 100%; object-fit: cover; }
  #cases .case-card:not(.is-mobile-featured) > div:last-child { padding: 10px !important; }
  #cases .case-card:not(.is-mobile-featured) h3 { margin: 3px 0 !important; font-size: 16px !important; }
  #cases .case-card:not(.is-mobile-featured) p:not(.micro),
  #cases .case-card:not(.is-mobile-featured) code { display: none !important; }
  #cases .case-card span { font-size: 9px; }

  /* Keep the complete 3D lineup visible at its source ratio instead of vertically cropping it. */
  #toys .toy-image-wrap {
    min-height: 0 !important;
    aspect-ratio: 1416 / 984;
    display: grid;
    place-items: center;
  }
  #toys .toy-image-wrap img {
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    aspect-ratio: 1416 / 984;
    object-fit: contain !important;
    object-position: center !important;
  }
  .terminal .terminal-body { padding: 14px !important; }
  .terminal form { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; gap: 8px !important; }
  .terminal input { min-width: 0 !important; min-height: 44px !important; font-size: 14px !important; }
  .terminal button { min-width: 72px; min-height: 44px !important; }
  .terminal-denied,
  .classified { max-height: 46svh; overflow-y: auto; }

  /* Map remains readable; touch cards are the primary location controls. */
  .map-layout { display: grid !important; grid-template-columns: 1fr !important; gap: 10px !important; }
  .map-stage {
    width: 100%;
    min-height: 0 !important;
    height: clamp(240px, 72vw, 320px) !important;
    aspect-ratio: auto !important;
  }
  .map-stage > img { width: 100%; height: 100%; object-fit: cover; }
  .map-node .node-label { display: none !important; }
  .mobile-place-strip { display: flex !important; grid-column: 1; }
  .mobile-place-card {
    flex: 0 0 clamp(154px, 47vw, 214px);
    min-height: 76px;
    padding: 10px;
    border: 1px solid #456d7b5e;
    color: #e7f0f2;
    background: #08131ae8;
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr);
    grid-template-rows: auto auto;
    align-content: center;
    gap: 3px 8px;
    text-align: left;
    scroll-snap-align: start;
  }
  .mobile-place-card > span { grid-row: 1 / 3; color: #ff8c4f; font-size: 10px; }
  .mobile-place-card strong { font-size: 13px; }
  .mobile-place-card small { overflow: hidden; color: #718c98; text-overflow: ellipsis; white-space: nowrap; font-size: 8px; }
  .mobile-place-card.active { border-color: #ff8c4f; background: #17100df2; }
  .map-detail {
    max-height: 150px;
    padding: 13px !important;
    overflow: hidden;
    transition: max-height .2s ease;
  }
  .map-detail.is-expanded { max-height: 420px; }
  .map-detail h3 { margin: 5px 0 2px !important; font-size: 21px !important; }
  .map-detail > p:not(.micro):not(.english) {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    font-size: 11px;
    line-height: 1.45;
  }
  .map-detail.is-expanded > p:not(.micro):not(.english) { display: block; overflow: visible; }
  .mobile-map-detail-toggle {
    display: inline-flex;
    min-height: 36px;
    margin-top: 6px;
    padding: 0 10px;
    align-items: center;
    border: 1px solid #ff8b4f62;
    color: #ff9b67;
    background: #130e0cca;
    font-size: 10px;
  }

  /* Fixed player: 56px closed, independently scrolling drawer capped at 65svh. */
  .floating-music {
    right: 8px !important;
    bottom: 8px !important;
    left: 8px !important;
    width: auto !important;
    min-height: 56px !important;
    height: 56px !important;
    border-radius: 12px !important;
  }
  .floating-music-main {
    min-height: 56px !important;
    height: 56px !important;
    padding: 0 92px 0 9px !important;
    grid-template-columns: 34px minmax(0, 1fr) !important;
    gap: 8px !important;
  }
  .floating-music-main > img { width: 34px !important; height: 34px !important; }
  .floating-music-copy > span { font-size: 7px !important; }
  .floating-music-copy > strong { font-size: 11px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .floating-music-controls {
    top: 9px !important;
    right: 48px !important;
    width: 38px !important;
    grid-template-columns: 38px !important;
  }
  .floating-music-prev,
  .floating-music-next { display: none !important; }
  .floating-music-controls .floating-music-play { min-height: 38px !important; }
  .floating-music-top { top: 9px !important; right: 6px !important; }
  .floating-music-list-toggle { width: 38px !important; min-height: 38px !important; font-size: 20px !important; }
  .floating-music-progress {
    right: 92px !important;
    bottom: 7px !important;
    left: 51px !important;
    height: 3px !important;
  }
  .floating-music-list {
    top: auto !important;
    right: 0 !important;
    bottom: calc(100% + 7px) !important;
    left: 0 !important;
    max-height: 65svh !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    border-radius: 12px !important;
  }
  .floating-music.drawer-open { border-color: #ff8b4f !important; }

  /* Full music section and print bench remain useful without becoming full-screen posters. */
  .music-grid { display: grid !important; grid-template-columns: 1fr !important; gap: 9px !important; }
  #music .album { display: grid !important; grid-template-columns: 92px minmax(0, 1fr) !important; gap: 10px !important; padding: 10px !important; }
  #music .album img { width: 92px !important; height: 92px !important; object-fit: contain; }
  #music .album h3 { margin: 3px 0 !important; font-size: 17px !important; }
  #music .album audio { width: 100%; height: 34px; }
  #music .playlist { max-height: 280px; overflow-y: auto; }
  .toy-section .section-head > p { display: none !important; }
  .toy-archive {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    min-height: 0 !important;
  }
  .toy-image-wrap {
    width: 100%;
    min-width: 0;
    min-height: 0 !important;
    height: auto !important;
    aspect-ratio: 1416 / 984;
  }
  .toy-image-wrap img {
    width: 100% !important;
    max-width: 100%;
    height: 100% !important;
    min-height: 0 !important;
    object-fit: contain !important;
  }
  .toy-copy { padding: 12px !important; }
  .toy-copy h3 { margin: 5px 0 !important; font-size: 18px !important; }
  .toy-copy > p:not(.micro) { margin: 5px 0 9px !important; font-size: 10px !important; line-height: 1.45; }
  .toy-specs--tabs { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px !important; }
  .toy-specs--tabs .toy-spec { min-height: 36px !important; padding: 0 5px !important; font-size: 7px !important; }
  .toy-footer-row { grid-column: 1 / -1; }

  /* The old-film-star relationship stays subordinate to team and case content. */
  .idol-strip-section { padding-top: 10px !important; }
  .idol-strip {
    min-height: 166px !important;
    max-height: 190px;
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-rows: auto 1fr auto;
    gap: 6px 10px !important;
    padding: 14px !important;
  }
  .idol-strip-code { grid-column: 1 / -1; }
  .idol-strip-description {
    display: block !important;
    grid-column: 1;
    font-size: 10px;
    line-height: 1.35;
  }
  .idol-strip-cta { grid-column: 2; grid-row: 2 / 4; min-height: 44px; }
  .idol-strip::after { font-size: 28px !important; opacity: .72; }

  /* Compact two-column sign-off; extra bottom room keeps controls unobstructed. */
  .footer {
    margin-top: 48px !important;
    padding-bottom: 72px;
  }
  .footer-inner {
    min-height: 0 !important;
    padding: 24px 0 !important;
    display: grid !important;
    grid-template-columns: 112px minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 14px !important;
  }
  .footer-inner > img { width: 112px !important; }
  .footer strong { font-size: 17px !important; }
  .footer-slogan,
  .footer-cn-slogan { font-size: 11px !important; }
  .footer-motto,
  .footer-development { font-size: 8px !important; }
  .footer-entity { justify-content: flex-start !important; font-size: 8px !important; }
  .footer-right {
    grid-column: 1 / -1 !important;
    padding-top: 12px !important;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .public-contact { margin: 0 !important; }

  /* Subpages inherit the same density and touch rules. */
  .subpage-route { min-height: 42px !important; }
  .subpage-route .page-shell { min-height: 42px !important; gap: 6px !important; }
  .route-code { display: none !important; }
  .subhero { min-height: 0 !important; height: clamp(250px, 72vw, 330px) !important; }
  .subhero .page-shell { padding-bottom: 22px !important; }
  .subhero h1 { font-size: clamp(34px, 10vw, 48px) !important; }
  .case-list-page { gap: 9px !important; }
  .subpage--cases .case-row {
    display: grid !important;
    grid-template-columns: 112px minmax(0, 1fr) !important;
    min-height: 108px !important;
  }
  .subpage--cases .case-row-media {
    width: 112px;
    height: 100% !important;
    min-height: 108px;
    aspect-ratio: auto !important;
  }
  .subpage--cases .case-row-media img { width: 100%; height: 100%; object-fit: cover; }
  .subpage--cases .case-row > div:nth-child(2) { padding: 11px !important; }
  .subpage--cases .case-row h2 { margin: 4px 0 !important; font-size: 17px !important; }
  .subpage--cases .case-row p:not(.location),
  .subpage--cases .case-row code { display: none !important; }
  .character-layout { grid-template-columns: 1fr !important; gap: 10px !important; }
  .switch-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 9px !important; }
  .toy-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 9px !important; }
  .toy-gallery-card--team { grid-column: span 2 !important; }

  img,
  video { max-width: 100%; }
  .team-photo,
  .case-media,
  .record-screen,
  .life-feature,
  .map-stage,
  .toy-image-wrap { contain: layout paint; }
}

@media (max-width: 380px) {
  .page-shell { width: calc(100% - 28px); }
  .site-header .site-brand { width: calc(100% - 170px) !important; }
  .site-header .site-brand .brand-cn { font-size: 11px !important; }
  .site-header .mobile-language-row { right: 52px !important; width: 112px !important; }
  .site-header .mobile-language-row .language-switcher { width: 112px !important; min-width: 112px !important; }
  .hero { min-height: 548px !important; }
  .hero-copy.panel::after { width: 48%; height: 116px; opacity: .11; }
  .mobile-hero-brand-name { font-size: 14px; }
  .hero-copy .hero-subtitle { font-size: 34px !important; }
  .hero-copy > p:not(.micro):not(.mobile-hero-slogan):not(.fsa-wordmark) {
    font-size: 10px !important;
    line-height: 1.35 !important;
  }
  .mobile-console-card { min-height: 72px; padding: 8px 6px; gap: 3px 5px; }
  .mobile-console-card i { width: 22px; height: 22px; }
  #team .team-copy { padding: 8px !important; }
  #team .team-copy h3 { font-size: 17px !important; }
  .mobile-member-role { font-size: 9px !important; }
  .toy-copy > p:not(.micro) { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .site-header .mobile-menu,
  .map-detail { transition: none !important; }
}
