.trainer-home { width: min(1640px, 100%); margin: 0 auto; }

.trainer-hero { position: relative; min-height: clamp(560px, 66vh, 780px); display: grid; grid-template-columns: minmax(270px, .82fr) minmax(420px, 1.35fr) minmax(280px, .82fr); align-items: center; gap: clamp(1rem, 2vw, 2.5rem); padding: clamp(2rem, 4.5vw, 5rem); overflow: hidden; isolation: isolate; border: 1px solid color-mix(in srgb, var(--region-accent) 24%, var(--border)); background: radial-gradient(circle at 50% 44%, color-mix(in srgb, var(--region-atmosphere) 88%, transparent), transparent 39%), linear-gradient(125deg, rgba(7,16,24,.95), rgba(3,8,13,.74) 52%, rgba(5,13,20,.96)); box-shadow: inset 0 0 90px rgba(0,0,0,.34), 0 24px 80px rgba(0,0,0,.28); }
.trainer-hero::before { content: ""; position: absolute; z-index: -2; inset: 0; opacity: calc(var(--region-field-strength) * .82); background-image: linear-gradient(color-mix(in srgb, var(--region-accent) 12%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--region-accent) 9%, transparent) 1px, transparent 1px); background-size: var(--region-grid) var(--region-grid); transform: perspective(500px) rotateX(62deg) scale(1.5) translateY(25%); transform-origin: bottom; mask-image: linear-gradient(transparent 10%, #000); }
.trainer-hero::after { content: ""; position: absolute; z-index: -1; width: min(72vw, 930px); aspect-ratio: 1; left: 50%; top: 48%; translate: -50% -50%; border: 1px solid color-mix(in srgb, var(--region-accent) 26%, transparent); border-radius: 50%; box-shadow: 0 0 110px color-mix(in srgb, var(--region-shadow) 32%, transparent), inset 0 0 80px color-mix(in srgb, var(--region-atmosphere) 36%, transparent); }

.trainer-hero__identity { position: relative; z-index: 3; align-self: start; padding-top: clamp(1rem, 5vh, 5rem); }
.trainer-hero__telemetry { position: absolute; z-index: 1; inset: 1rem 1.2rem auto; display: flex; justify-content: space-between; color: color-mix(in srgb, var(--region-accent) 50%, var(--text-muted)); font-size: .48rem; font-weight: 750; letter-spacing: .19em; }
.trainer-hero__telemetry span::before { content: ""; display: inline-block; width: 16px; height: 1px; margin-right: .5rem; vertical-align: middle; background: currentColor; }
.trainer-hero__location { display: flex; align-items: center; gap: .55rem; margin: .75rem 0 2.5rem; color: var(--text-secondary); font-size: .74rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.trainer-hero__location i { width: 18px; height: 1px; background: var(--region-secondary); box-shadow: 0 0 8px var(--region-secondary); }
.trainer-hero h1 { margin: 0; font-size: clamp(2.35rem, 4.5vw, 5rem); line-height: .87; letter-spacing: -.055em; text-transform: uppercase; text-wrap: balance; }
.trainer-hero h1 small { display: block; margin-bottom: .45rem; color: var(--text-secondary); font-size: clamp(.7rem, .85vw, .95rem); font-weight: 650; letter-spacing: .22em; }
.trainer-hero__designation { display: block; margin-top: .85rem; color: var(--region-accent); font-size: .72rem; letter-spacing: .17em; }.trainer-hero__designation i { color: var(--region-secondary); font-style: normal; }
.trainer-hero__promise { max-width: 29ch; margin: 1.25rem 0 0; color: var(--text-secondary); font-size: clamp(.9rem, 1vw, 1.05rem); line-height: 1.6; }

.trainer-hero__pokemon { position: relative; z-index: 2; min-width: 0; align-self: stretch; display: grid; place-items: center; }
.trainer-hero__pokemon .portal-specimen { width: 100%; height: 100%; display: grid; place-items: center; grid-template-rows: 1fr auto; margin: 0; }
.trainer-hero__pokemon .portal-specimen img { position: relative; z-index: 2; width: min(46vw, 650px); height: min(52vw, 690px); object-fit: contain; image-rendering: auto; filter: drop-shadow(0 38px 44px rgba(0,0,0,.62)) drop-shadow(0 0 34px color-mix(in srgb, var(--region-accent) 23%, transparent)); animation: pokemon-drift 5.5s var(--ease-out) infinite alternate; }
.trainer-hero__pokemon::before { content: ""; position: absolute; z-index: 1; width: min(31vw, 430px); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--region-accent) 24%, transparent), color-mix(in srgb, var(--region-atmosphere) 18%, transparent) 48%, transparent 72%); filter: blur(2px); }
.trainer-hero__pokemon::after { content: ""; position: absolute; z-index: 3; left: 9%; right: 9%; top: 46%; height: 1px; opacity: .55; background: linear-gradient(90deg, transparent, var(--region-accent), transparent); box-shadow: 0 0 8px var(--region-accent); animation: specimen-scan 6s var(--ease-out) infinite; }
.trainer-hero__pokemon .portal-specimen figcaption { position: absolute; left: 50%; bottom: 4%; translate: -50% 0; min-width: min(320px, 80%); display: grid; grid-template-columns: 1fr auto; align-items: end; padding: .7rem 1rem; border-block: 1px solid color-mix(in srgb, var(--region-accent) 30%, transparent); background: linear-gradient(90deg, transparent, rgba(5,13,19,.78) 15% 85%, transparent); text-align: center; }
.trainer-hero__pokemon .portal-specimen figcaption small { grid-column: 1 / -1; color: var(--region-accent); font-size: .58rem; letter-spacing: .2em; }
.trainer-hero__pokemon .portal-specimen figcaption strong { font-size: clamp(1.1rem, 1.8vw, 1.7rem); text-transform: uppercase; }
.portal-shiny { color: var(--shiny); font-size: .62rem; letter-spacing: .13em; }
.trainer-hero__orbit { position: absolute; inset: 50% auto auto 50%; width: min(37vw, 520px); aspect-ratio: 1; translate: -50% -50%; border: 1px solid color-mix(in srgb, var(--region-accent) 30%, transparent); border-radius: 50%; }
.trainer-hero__orbit::before, .trainer-hero__orbit::after { content: ""; position: absolute; border: 1px solid color-mix(in srgb, var(--region-accent) 15%, transparent); border-radius: 50%; inset: 12%; }
.trainer-hero__orbit::after { inset: 27%; border-style: dashed; border-color: color-mix(in srgb, var(--region-secondary) 32%, transparent); }
.trainer-hero__orbit i { position: absolute; width: 7px; height: 7px; border-radius: 50%; background: var(--region-accent); box-shadow: 0 0 13px var(--region-accent); }
.trainer-hero__orbit i:nth-child(1) { left: 4%; top: 50%; }.trainer-hero__orbit i:nth-child(2) { right: 14%; top: 14%; background: var(--region-secondary); }.trainer-hero__orbit i:nth-child(3) { right: 23%; bottom: 8%; }
@keyframes pokemon-drift { to { transform: translateY(-9px) scale(1.012); } }
@keyframes specimen-scan { 0%, 20% { transform: translateY(-150px); opacity: 0; } 35%, 70% { opacity: .55; } 85%, 100% { transform: translateY(150px); opacity: 0; } }

.portal-specimen--empty { min-height: 320px; color: var(--text-muted); }
.portal-specimen--empty p { margin: 0; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; }
.portal-pokemon-silhouette { position: relative; width: min(30vw, 360px); aspect-ratio: 1; display: block; opacity: .42; filter: drop-shadow(0 0 22px color-mix(in srgb, var(--region-accent) 25%, transparent)); }
.portal-pokemon-silhouette::before { content: ""; position: absolute; width: 44%; aspect-ratio: 1; left: 28%; top: 17%; border-radius: 48% 52% 45% 55%; background: currentColor; }
.portal-pokemon-silhouette::after { content: ""; position: absolute; width: 66%; height: 46%; left: 17%; bottom: 13%; border-radius: 54% 46% 38% 62%; background: currentColor; }
.portal-pokemon-silhouette i::before, .portal-pokemon-silhouette i::after { content: ""; position: absolute; z-index: 1; width: 23%; height: 34%; top: 10%; background: currentColor; clip-path: polygon(0 0, 100% 100%, 0 78%); }
.portal-pokemon-silhouette i::before { left: 20%; }.portal-pokemon-silhouette i::after { right: 20%; transform: scaleX(-1); }

.trainer-hero__command { position: relative; z-index: 3; align-self: end; padding-bottom: clamp(1rem, 5vh, 5rem); }
.trainer-hero__continue { display: block; margin-bottom: .65rem; color: var(--text-muted); font-size: .62rem; font-weight: 850; letter-spacing: .22em; }
.portal-world-action { position: relative; display: grid; gap: .32rem; min-height: 104px; padding: 1.25rem 4.8rem 1.15rem 1.5rem; overflow: hidden; border: 1px solid var(--region-accent); border-radius: 2px 22px 2px 2px; background: linear-gradient(105deg, color-mix(in srgb, var(--region-accent) 27%, #071018), color-mix(in srgb, var(--region-shadow) 34%, #071018)); color: var(--text-primary); text-decoration: none; box-shadow: 0 0 42px color-mix(in srgb, var(--region-accent) 19%, transparent), inset 0 0 24px rgba(255,255,255,.045); transition: transform var(--motion-fast), box-shadow var(--motion-base), background var(--motion-base); }
.portal-world-action::after { content: ""; position: absolute; right: -20px; top: 50%; width: 90px; height: 90px; translate: 0 -50%; border: 1px solid color-mix(in srgb, var(--region-accent) 55%, transparent); border-radius: 50%; box-shadow: inset 0 0 0 16px color-mix(in srgb, var(--region-accent) 8%, transparent); }
.portal-world-action b { font-size: clamp(1.25rem, 2vw, 1.8rem); letter-spacing: .05em; }
.portal-world-action span { color: var(--text-secondary); font-size: .72rem; font-weight: 750; letter-spacing: .11em; text-transform: uppercase; }
.portal-world-action span i { color: var(--region-secondary); font-style: normal; }.portal-world-action span em { color: var(--region-accent); font-style: normal; }
.portal-world-action:hover { transform: translateY(-2px); box-shadow: 0 10px 45px color-mix(in srgb, var(--region-accent) 25%, transparent); }
.portal-world-action:focus-visible { outline-color: var(--focus); box-shadow: 0 0 0 3px var(--portal-bg), 0 0 0 5px var(--focus), 0 12px 50px color-mix(in srgb, var(--region-accent) 25%, transparent); }.portal-world-action:active { transform: translateY(1px) scale(.992); }
.trainer-hero__party { margin-top: 1.5rem; }
.trainer-hero__party > span { display: block; margin-bottom: .55rem; color: var(--text-muted); font-size: .58rem; font-weight: 800; letter-spacing: .18em; }
.trainer-hero__party ol { list-style: none; display: grid; grid-template-columns: repeat(6, 1fr); gap: .35rem; margin: 0; padding: 0; }
.portal-party-slot { position: relative; min-width: 0; aspect-ratio: .88; display: grid; place-items: center; overflow: hidden; border: 1px solid color-mix(in srgb, var(--region-accent) 13%, var(--border)); border-bottom: 2px solid var(--border); background: radial-gradient(circle at 50% 44%, color-mix(in srgb, var(--region-accent) 9%, transparent), transparent 55%); }
.portal-party-slot img { width: 100%; height: 100%; object-fit: contain; image-rendering: auto; }
.portal-party-slot > span { position: absolute; inset: auto 2px 1px; display: grid; padding: .15rem; background: linear-gradient(transparent, rgba(2,7,11,.85)); color: var(--text-secondary); font-size: .46rem; }.portal-party-slot > span b { overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); font-size: .46rem; text-transform: uppercase; }.portal-party-slot > span small { font-size: .42rem; }
.portal-party-slot.is-partner { border-color: var(--region-accent); box-shadow: inset 0 0 14px color-mix(in srgb, var(--region-accent) 10%, transparent); }.portal-party-slot.is-partner::before { content: "PARTNER"; position: absolute; z-index: 2; left: 2px; top: 2px; color: var(--region-accent); font-size: .38rem; font-weight: 850; letter-spacing: .08em; }
.portal-party-slot.is-shiny { border-color: var(--shiny); }.portal-party-slot.is-empty > span { position: absolute; inset: auto 0 4px; display: block; background: none; text-align: center; color: var(--text-muted); font-size: .38rem; letter-spacing: .12em; }.portal-party-slot.is-empty > i { width: 52%; aspect-ratio: 1; border: 1px dashed var(--border); border-radius: 50%; }.portal-party-slot.is-empty > i::before { content: ""; position: absolute; left: 20%; right: 20%; top: 50%; height: 1px; background: var(--border); }

.portal-link-status { display: grid; gap: .3rem; margin-bottom: 1rem; padding: .75rem .85rem; border-left: 2px solid var(--region-accent); background: rgba(4,10,15,.64); }
.portal-link-status b { color: var(--region-accent); font-size: .64rem; letter-spacing: .13em; }.portal-link-status span { color: var(--text-secondary); font-size: .75rem; line-height: 1.45; }
.portal-link-status button { justify-self: start; margin-top: .35rem; padding: .48rem .7rem; border: 1px solid var(--warning); background: transparent; color: var(--text-primary); font-size: .62rem; font-weight: 850; letter-spacing: .1em; cursor: pointer; }
.portal-link-status.is-warning { border-color: var(--warning); }.portal-link-status.is-warning b { color: var(--warning); }
.portal-link-status--inline { grid-template-columns: auto 1fr auto; align-items: center; margin: 1rem 0 0; }

.trainer-journey { display: grid; grid-template-columns: 1.2fr .9fr .75fr; gap: 1rem; margin-top: 1rem; }
.trainer-journey > article { position: relative; min-width: 0; min-height: 280px; overflow: hidden; border: 1px solid var(--border); background: linear-gradient(145deg, rgba(12,27,37,.92), rgba(5,12,18,.96)); }
.region-record { padding: 1.6rem; }.region-record > *:not(.region-record__field) { position: relative; z-index: 1; }
.region-record__field { position: absolute; inset: 0 0 20%; opacity: .25; background-image: linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px); background-size: 28px 28px; clip-path: polygon(38% 0, 100% 0, 100% 100%, 8% 75%); }
.region-record__field i { position: absolute; width: 8px; height: 8px; border: 1px solid var(--region-accent); border-radius: 50%; box-shadow: 0 0 12px var(--region-accent); }.region-record__field i:nth-child(1) { left: 48%; top: 26%; }.region-record__field i:nth-child(2) { left: 72%; top: 50%; }.region-record__field i:nth-child(3) { left: 38%; top: 68%; }
.region-record header, .live-signal header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }.region-record header strong { color: var(--region-accent); font-size: 2.6rem; line-height: 1; }.region-record header small { color: var(--text-muted); font-size: .8rem; }
.region-record h2 { margin: 2.5rem 0 .15rem; font-size: clamp(1.7rem, 2.6vw, 2.7rem); text-transform: uppercase; }.region-record > p { margin: 0; color: var(--text-secondary); }
.region-badge-rail { display: grid; grid-template-columns: repeat(8, 1fr); gap: .4rem; margin: 1.5rem 0; }.region-badge-rail i { aspect-ratio: 1; border: 1px solid var(--border); border-radius: 50%; background: var(--surface-inset); }.region-badge-rail i.is-earned { border-color: var(--region-accent); background: radial-gradient(circle, var(--region-accent) 0 22%, color-mix(in srgb, var(--region-accent) 20%, transparent) 24% 50%, transparent 52%); box-shadow: 0 0 12px color-mix(in srgb, var(--region-accent) 30%, transparent); }
.region-record footer { display: flex; justify-content: space-between; gap: 1rem; color: var(--text-muted); font-size: .58rem; font-weight: 800; letter-spacing: .13em; }.region-record a, .live-signal > a, .recent-catch > a { color: var(--region-accent); text-decoration: none; }

.live-signal { padding: 1.35rem; }.live-signal header { justify-content: start; }.live-signal h2 { margin: .2rem 0; font-size: 1.05rem; }.live-beacon { flex: 0 0 auto; width: 13px; height: 13px; border: 3px solid rgba(255,69,102,.2); border-radius: 50%; background: var(--live); box-shadow: 0 0 14px var(--live); }.live-signal.is-active .live-beacon { animation: live-pulse 1.8s ease-out infinite; }.live-signal__body { min-height: 175px; display: grid; place-items: center; }.live-signal .portal-specimen img { width: 175px; height: 175px; object-fit: contain; filter: drop-shadow(0 12px 18px rgba(0,0,0,.5)); }.live-signal .portal-specimen.is-shiny img { filter: drop-shadow(0 0 22px color-mix(in srgb, var(--shiny) 38%, transparent)); }.live-signal .portal-specimen figcaption { text-align: center; }.live-signal .portal-specimen figcaption small { display: block; color: var(--live); font-size: .54rem; letter-spacing: .15em; }.live-signal .portal-specimen figcaption strong { font-size: 1rem; text-transform: uppercase; }.live-signal > a { font-size: .62rem; font-weight: 850; letter-spacing: .12em; }
@keyframes live-pulse { 70%, 100% { box-shadow: 0 0 0 9px rgba(255,69,102,0), 0 0 14px var(--live); } }
.live-standby { text-align: center; color: var(--text-secondary); }.live-standby i { width: 82px; height: 82px; display: block; margin: 0 auto .8rem; border: 1px dashed var(--border); border-radius: 50%; box-shadow: inset 0 0 25px rgba(255,69,102,.04); }.live-standby p { max-width: 20ch; margin: 0; font-size: .8rem; line-height: 1.5; }

.recent-catch { padding: 1.35rem; display: flex; flex-direction: column; }.recent-catch > div { flex: 1; display: grid; place-items: center; }.portal-mini-specimen { width: 100%; margin: 0; display: grid; place-items: center; }.portal-mini-specimen img { width: min(150px, 70%); aspect-ratio: 1; object-fit: contain; }.portal-mini-specimen figcaption { display: grid; text-align: center; }.portal-mini-specimen figcaption small { color: var(--region-accent); font-size: .52rem; letter-spacing: .14em; }.portal-mini-specimen figcaption strong { text-transform: uppercase; }.portal-mini-specimen figcaption b { color: var(--shiny); font-size: .55rem; }.portal-mini-specimen .portal-pokemon-silhouette { width: 120px; }.portal-mini-specimen.is-empty p { color: var(--text-muted); font-size: .72rem; }

.trainer-utilities { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-top: 1rem; background: var(--border); border: 1px solid var(--border); }.trainer-utility { min-width: 0; min-height: 116px; display: flex; align-items: center; gap: 1rem; padding: 1.15rem; background: var(--surface-elevated); color: var(--text-primary); text-decoration: none; transition: background var(--motion-fast), transform var(--motion-fast); }.trainer-utility:hover { z-index: 1; background: color-mix(in srgb, var(--region-atmosphere) 45%, var(--surface-elevated)); transform: translateY(-2px); }.trainer-utility__icon { flex: 0 0 auto; width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid var(--border-luminous); border-radius: 50%; color: var(--region-accent); font-weight: 850; }.trainer-utility > span:last-child { min-width: 0; display: grid; }.trainer-utility small { color: var(--text-muted); font-size: .55rem; letter-spacing: .15em; }.trainer-utility b { margin-top: .2rem; overflow: hidden; text-overflow: ellipsis; font-size: 1rem; }.trainer-utility em { color: var(--text-secondary); font-size: .7rem; font-style: normal; }
.society-transmission { display: flex; align-items: center; justify-content: space-between; gap: 2rem; min-height: 150px; margin-top: 1rem; padding: 1.6rem; overflow: hidden; border: 1px solid var(--border); background: linear-gradient(105deg, color-mix(in srgb, var(--region-atmosphere) 58%, var(--surface-inset)), var(--surface-inset)); }.society-transmission h2 { margin: .35rem 0; }.society-transmission p { max-width: 720px; margin: 0; color: var(--text-secondary); }.society-transmission a { flex: 0 0 auto; color: var(--region-accent); font-size: .64rem; font-weight: 850; letter-spacing: .13em; text-decoration: none; }
.trainer-support { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1rem; }.trainer-support article { min-height: 160px; padding: 1.4rem; border: 1px solid var(--border); background: var(--surface-elevated); }.trainer-support article > span { color: var(--region-accent); font-size: .58rem; font-weight: 850; letter-spacing: .16em; }.trainer-support h2 { margin: .4rem 0; }.trainer-support p { color: var(--text-secondary); }

@media (prefers-reduced-motion: reduce) { .trainer-hero__pokemon .portal-specimen img, .trainer-hero__pokemon::after, .live-signal.is-active .live-beacon { animation: none; } }

/* Phase 8 release visual: Pokemon-first Trainer HQ. Presentation only. */
.trainer-home { --adventure-glow: color-mix(in srgb, var(--region-accent) 34%, transparent); }
.trainer-hero {
  min-height: clamp(520px, 61vh, 690px);
  grid-template-columns: minmax(250px, .72fr) minmax(430px, 1.45fr) minmax(320px, .9fr);
  border-radius: 28px;
  border-color: color-mix(in srgb, var(--region-accent) 38%, var(--border));
  background:
    radial-gradient(ellipse at 53% 102%, color-mix(in srgb, var(--region-secondary) 20%, transparent), transparent 42%),
    radial-gradient(circle at 52% 42%, color-mix(in srgb, var(--region-atmosphere) 92%, transparent), transparent 44%),
    linear-gradient(125deg, rgba(13,19,25,.98), rgba(5,12,17,.78) 52%, rgba(8,16,23,.98));
  box-shadow: 0 26px 80px rgba(0,0,0,.38), inset 0 1px rgba(255,255,255,.045);
}
.trainer-hero::before {
  opacity: .24;
  background-image: radial-gradient(circle, color-mix(in srgb, var(--region-accent) 22%, transparent) 1px, transparent 1.5px);
  background-size: 28px 28px;
  transform: none;
  mask-image: linear-gradient(to bottom, transparent, #000 55%, transparent);
}
.trainer-hero::after {
  width: min(39vw, 560px);
  top: 53%;
  border: 0;
  background: radial-gradient(circle, var(--adventure-glow), transparent 67%);
  box-shadow: none;
}
.trainer-hero__telemetry {
  inset: 1.2rem 1.5rem auto;
  justify-content: flex-start;
  gap: 1rem;
  font-size: .58rem;
  letter-spacing: .08em;
}
.trainer-hero__telemetry span { padding: .38rem .65rem; border-radius: 99px; background: rgba(255,255,255,.045); }
.trainer-hero__telemetry span::before { display: none; }
.trainer-hero__identity { align-self: center; padding-top: 0; }
.trainer-hero__location { margin: .7rem 0 1.4rem; font-size: .82rem; }
.trainer-hero h1 { font-size: clamp(2.6rem, 4.3vw, 4.9rem); line-height: .92; }
.trainer-hero h1 small { color: var(--region-secondary); letter-spacing: .1em; text-transform: none; }
.trainer-hero__designation { font-size: .78rem; letter-spacing: .1em; }
.trainer-hero__promise { max-width: 32ch; color: #c6d2d8; font-size: 1rem; }
.trainer-hero__pokemon { margin: -1.5rem; }
.trainer-hero__pokemon::before { width: min(35vw, 470px); background: radial-gradient(circle, color-mix(in srgb, var(--region-accent) 28%, transparent), transparent 68%); }
.trainer-hero__pokemon::after { display: none; }
.trainer-hero__orbit { opacity: .24; border-style: dashed; }
.trainer-hero__orbit::after { display: none; }
.trainer-hero__pokemon .portal-specimen img { width: min(43vw, 610px); height: min(47vw, 630px); filter: drop-shadow(0 42px 32px rgba(0,0,0,.58)) drop-shadow(0 0 38px var(--adventure-glow)); }
.trainer-hero__pokemon .portal-specimen figcaption {
  bottom: 3%;
  min-width: min(350px, 82%);
  grid-template-columns: 1fr auto;
  gap: .2rem .8rem;
  padding: .85rem 1.1rem;
  border: 1px solid color-mix(in srgb, var(--region-accent) 30%, transparent);
  border-radius: 16px;
  background: rgba(5,12,17,.86);
  backdrop-filter: blur(12px);
}
.trainer-hero__pokemon .portal-specimen figcaption small { color: var(--region-secondary); font-size: .66rem; letter-spacing: .12em; }
.trainer-hero__pokemon .portal-specimen figcaption strong { font-size: clamp(1.4rem, 2vw, 2rem); }
.trainer-hero__pokemon .portal-specimen figcaption > span { align-self: center; color: var(--region-accent); font-weight: 900; }
.trainer-hero__command { align-self: center; padding-bottom: 0; }
.trainer-hero__continue { color: var(--region-secondary); font-size: .66rem; letter-spacing: .12em; }
.portal-world-action {
  min-height: 118px;
  border: 0;
  border-radius: 18px;
  background: linear-gradient(125deg, var(--region-accent), color-mix(in srgb, var(--region-accent) 58%, var(--region-secondary)));
  color: #06130f;
  box-shadow: 0 18px 50px var(--adventure-glow), inset 0 1px rgba(255,255,255,.34);
}
[data-portal-region="kanto"] .portal-world-action { color: #260707; }
.portal-world-action b { max-width: 15ch; font-size: clamp(1.2rem, 1.75vw, 1.65rem); line-height: 1.05; }
.portal-world-action span, .portal-world-action span i, .portal-world-action span em { color: currentColor; opacity: .78; }
.portal-world-action::after { border-color: color-mix(in srgb, currentColor 28%, transparent); box-shadow: inset 0 0 0 16px color-mix(in srgb, currentColor 7%, transparent); }
.trainer-hero__party { margin-top: 1rem; }
.trainer-hero__party > span { color: var(--text-secondary); font-size: .66rem; letter-spacing: .1em; }
.trainer-hero__party ol { gap: .5rem; }
.portal-party-slot { aspect-ratio: .82; border-radius: 12px; background: linear-gradient(160deg, color-mix(in srgb, var(--region-atmosphere) 54%, var(--surface-raised)), var(--surface-inset)); box-shadow: inset 0 1px rgba(255,255,255,.04); }
.portal-party-slot img { padding: .18rem; }
.portal-party-slot > span { inset: auto 0 0; padding: .9rem .25rem .28rem; text-align: center; }
.portal-party-slot > span b { font-size: .54rem; }
.portal-party-slot > span small { color: var(--region-secondary); font-size: .46rem; }
.portal-party-slot.is-partner { border-width: 2px; box-shadow: 0 8px 24px var(--adventure-glow); transform: translateY(-3px); }
.portal-party-slot.is-partner::before { left: 5px; top: 5px; padding: .15rem .3rem; border-radius: 99px; background: var(--region-accent); color: #06130f; }
.trainer-journey { gap: 1.15rem; margin-top: 1.15rem; }
.trainer-journey > article { min-height: 310px; border-radius: 22px; border-color: color-mix(in srgb, var(--region-accent) 18%, var(--border)); box-shadow: 0 18px 44px rgba(0,0,0,.22); }
.region-record { background: radial-gradient(circle at 88% 14%, var(--adventure-glow), transparent 34%), linear-gradient(145deg, color-mix(in srgb, var(--region-atmosphere) 55%, #101922), #071017); }
.region-record__field { display: none; }
.region-record h2 { margin-top: 2rem; text-transform: none; }
.region-badge-rail { gap: .6rem; }
.region-badge-rail i { border-width: 2px; background: radial-gradient(circle, rgba(255,255,255,.055), transparent 68%); box-shadow: inset 0 0 0 4px rgba(255,255,255,.025); }
.live-signal, .recent-catch { background: linear-gradient(155deg, color-mix(in srgb, var(--region-atmosphere) 46%, #101922), #071017); }
.live-signal .portal-specimen img { width: 195px; height: 195px; }
.recent-catch .portal-mini-specimen img { width: min(175px, 78%); filter: drop-shadow(0 18px 20px rgba(0,0,0,.5)); }
.trainer-utilities { gap: .75rem; border: 0; background: transparent; }
.trainer-utility { border: 1px solid var(--border); border-radius: 16px; background: linear-gradient(145deg, var(--surface-elevated), color-mix(in srgb, var(--region-atmosphere) 26%, var(--surface-inset))); }
.society-transmission { border-radius: 20px; }

@media (max-width: 1240px) {
  .trainer-hero { grid-template-columns: minmax(230px,.75fr) minmax(340px,1.25fr); }
  .trainer-hero__command { align-self: auto; }
}
@media (max-width: 900px) {
  .trainer-hero { min-height: 620px; }
  .trainer-hero__telemetry { display: none; }
  .trainer-hero__pokemon { margin: 0; }
}
@media (max-width: 767px) {
  .trainer-hero { min-height: 720px; border-radius: 22px; padding: 1.2rem; }
  .trainer-hero::before { background-size: 22px 22px; }
  .trainer-hero__pokemon { inset: 142px 0 245px; }
  .trainer-hero__pokemon .portal-specimen img { width: min(78vw, 330px); height: min(78vw, 330px); }
  .trainer-hero__pokemon .portal-specimen figcaption { min-width: min(280px, 82%); padding: .65rem .8rem; }
  .portal-world-action { min-height: 88px; }
  .portal-world-action b { max-width: 18ch; font-size: 1.12rem; }
  .portal-party-slot { aspect-ratio: .9; }
  .trainer-journey > article { min-height: 270px; }
}
@media (max-width: 430px) {
  .trainer-hero { min-height: 690px; }
  .trainer-hero__pokemon { inset-block: 138px 232px; }
  .trainer-hero h1 { font-size: clamp(2rem, 10.5vw, 2.8rem); }
}
@media (max-width: 359px) {
  .trainer-hero { min-height: 665px; }
  .trainer-hero__pokemon { inset-block: 132px 220px; }
  .trainer-hero__pokemon .portal-specimen img { width: 270px; height: 270px; }
  .portal-world-action { padding-right: 3.5rem; }
}
