:root {
  --portal-paper: #f5f3eb;
  --portal-ink: #111218;
  --portal-night: #034c9a;
  --portal-blue: #087bcc;
  --portal-cyan: #57d7e8;
  --portal-purple: #7468a8;
  --portal-pink: #f5a3d3;
  --portal-yellow: #ffd45a;
  --portal-coral: #ff8b87;
  --portal-line: rgba(17, 18, 24, 0.18);
  --portal-shell: min(92vw, 1440px);
  --portal-gutter: clamp(1.25rem, 3vw, 3rem);
  --portal-section-space: clamp(7rem, 13vw, 13rem);
}

html { scroll-behavior: smooth; }
body.home {
  margin: 0;
  overflow-x: hidden;
  background: var(--portal-paper);
  color: var(--portal-ink);
  font-family: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.8;
  text-rendering: optimizeLegibility;
}
body.home::after { content: ""; position: fixed; z-index: 2000; inset: 0; pointer-events: none; opacity: .025; background: url("../img/common/noise.png") repeat; background-size: 300px 300px; mix-blend-mode: multiply; }
body.home *, body.home *::before, body.home *::after { box-sizing: border-box; }
body.home a { color: inherit; text-decoration: none; }
body.home img { display: block; max-width: 100%; }
body.home svg { display: block; max-width: none; }
body.home .portal-footer__wave { width:100%;max-width:100%; }
body.home p, body.home h1, body.home h2, body.home h3 { margin: 0; }
body.home h1, body.home h2, body.home h3 { max-width: 100%; overflow-wrap: anywhere; }
body.home h2 { margin-bottom: clamp(.85rem, 1.5vw, 1.5rem); font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; font-style: normal; font-weight: 400; letter-spacing: .04em; }
body.home h3 { font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; font-size: clamp(1.05rem, 1.5vw, 1.5rem); font-style: normal; font-weight: 400; letter-spacing: .045em; }
body.home button { color: inherit; font: inherit; }
body.home a:focus-visible, body.home button:focus-visible, body.home input:focus-visible, body.home textarea:focus-visible { outline: 2px solid var(--portal-yellow); outline-offset: 4px; }
.portal-shell { width: var(--portal-shell); margin-inline: auto; }
.portal-shell > *, .portal-selected__grid > *, .portal-work-areas > *, .portal-projects-grid > * { min-width: 0; }
.portal-main { max-width: 100%; overflow: clip; background: linear-gradient(180deg, #dff8f7 0%, var(--portal-paper) 32%, #dff5f4 66%, #087bcc 100%); }
.portal-section { padding-block: var(--portal-section-space); }
.portal-section-label, .portal-work__label, .portal-photo time {
  font-family: Arial, Helvetica, sans-serif;
  font-size: clamp(.68rem, .75vw, .8rem);
  font-style: italic;
  font-weight: 400;
  letter-spacing: .14em;
  line-height: 1.4;
}
.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.screen-reader-text:focus {
  z-index: 10000; top: 1rem; left: 1rem; width: auto; height: auto;
  padding: .8rem 1rem; margin: 0; clip: auto; background: var(--portal-paper); color: var(--portal-ink);
}
.portal-text-link {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 2rem;
  min-height: 44px; padding-block: .5rem; border-bottom: 1px solid currentColor;
  font-size: .75rem; font-weight: 700; letter-spacing: .12em;
}
.portal-text-link .link-arrow { transition: transform .25s ease; }
.portal-text-link:hover .link-arrow, .portal-text-link:focus-visible .link-arrow { transform: translate(3px, -3px); }
.portal-text-link--light { color: var(--portal-paper); }
.portal-hero__index, .portal-hero__fields, .portal-hero__scroll, .portal-text-link { font-family: Arial, Helvetica, sans-serif; }
.portal-intro__copy h2, .portal-section-heading h2, .portal-contact h2, .portal-about h2 { font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; }
.portal-card__media, .post-card__media { overflow: hidden; }
.portal-card__media img, .post-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--portal-image-position, center); }

/* Header */
.portal-header {
  position: fixed; z-index: 1000; inset: 0 0 auto; display: flex; align-items: center; justify-content: space-between;
  min-height: 76px; padding: 0 max(4vw, 1.25rem); color: #fff; border-bottom: 1px solid transparent;
  transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}
.portal-header.is-scrolled { color: var(--portal-ink); background: rgba(245,245,242,.94); border-color: var(--portal-line); }
.portal-header__brand { display: flex; align-items: center; width: clamp(5.8rem, 8vw, 8rem); min-height: 44px; }
.portal-header__brand img { display: block; width: 100%; height: auto; filter: brightness(0) invert(1); transition: filter .25s ease; }
.portal-header.is-scrolled .portal-header__brand img { filter: none; }
.portal-navigation { display: flex; align-items: center; gap: clamp(1rem, 2.2vw, 2.6rem); }
.portal-navigation a { display: inline-flex; align-items: center; min-height: 44px; font-size: .7rem; font-weight: 700; letter-spacing: .12em; }
.portal-navigation a::after { content: ""; position: absolute; width: 0; height: 1px; margin-top: 1.5rem; background: currentColor; transition: width .2s ease; }
.portal-navigation a:hover::after, .portal-navigation a:focus-visible::after { width: 1.8rem; }
.portal-menu-toggle { display: none; border: 0; background: transparent; }

/* Hero */
.portal-hero { position: relative; min-height: 100vh; min-height: 100svh; overflow: hidden; color: #fff; background: var(--portal-blue); }
.portal-hero__background { position: absolute; inset: -4%; overflow: hidden; background: linear-gradient(135deg, var(--portal-cyan), var(--portal-blue) 55%, var(--portal-night)); }
.portal-hero__canvas, .portal-hero__fallback { position: absolute; inset: 0; width: 100%; height: 100%; }
.portal-hero__canvas { z-index: 1; opacity: 0; transition: opacity .6s ease; }
.portal-hero__canvas.is-ready { opacity: 1; }
.portal-hero__fallback { background: radial-gradient(circle at 78% 26%, rgba(245,163,211,.82), transparent 25%), radial-gradient(circle at 18% 74%, rgba(255,212,90,.58), transparent 18%), radial-gradient(circle at 56% 52%, rgba(145,69,190,.56), transparent 31%), radial-gradient(circle at 12% 12%, rgba(87,215,232,.95), transparent 32%), linear-gradient(135deg, #57d7e8, #087bcc 48%, #021d54); background-size: 125% 125%, 135% 135%, 120% 120%, 140% 140%, 100% 100%; animation: portal-fallback-flow 12s ease-in-out infinite alternate; }
.portal-grain { position: absolute; z-index: 2; inset: -8%; pointer-events: none; opacity: .16; background: url("../img/common/noise.png") repeat; background-size: 300px 300px; mix-blend-mode: soft-light; animation: portal-grain-jitter .32s steps(2,end) infinite; will-change: transform; }
@keyframes portal-grain-jitter { 0% { transform: translate3d(-2%, -1%, 0); } 25% { transform: translate3d(1%, 2%, 0); } 50% { transform: translate3d(2%, -2%, 0); } 75% { transform: translate3d(-1%, 1%, 0); } 100% { transform: translate3d(1%, -1%, 0); } }
@keyframes portal-fallback-flow { 0% { background-position: 100% 0, 0 100%, 55% 40%, 0 0, 0 0; } 100% { background-position: 72% 18%, 18% 82%, 42% 62%, 12% 8%, 0 0; } }
.portal-hero__background::before {
  content: ""; position: absolute; inset: 0; opacity: .32;
  background-image: radial-gradient(rgba(255,255,255,.8) .6px, transparent .8px);
  background-size: 52px 52px;
  mask-image: linear-gradient(to bottom, #000, transparent 75%);
}
.portal-hero__orbits { z-index: 2; position: absolute; width: min(90vw, 1300px); left: 50%; top: 49%; transform: translate(-50%, -50%); opacity: .38; fill: none; stroke: rgba(255,255,255,.72); stroke-width: 1; }
.portal-hero-neri { position: absolute; z-index: 2; inset: 0; overflow: hidden; pointer-events: none; }
.portal-hero-neri__floating, .portal-hero-neri__resting { position: absolute; width: clamp(5.4rem, 7.5vw, 7.5rem); transform-origin: 50% 55%; }
.portal-hero-neri__floating { left: -8rem; bottom: 10%; visibility: hidden; opacity: 0; will-change: transform, opacity; }
.portal-hero-neri__resting { right: clamp(2rem, 6vw, 7rem); bottom: clamp(9.5rem, 23vh, 14rem); opacity: 0; animation: portal-neri-fallback-show .01s 8s forwards; }
.portal-hero-neri__floating img, .portal-hero-neri__resting img { display: block; width: 100%; height: auto; }
.portal-hero-neri__floating img { animation: portal-neri-swim 4.3s cubic-bezier(.45,.05,.55,.95) infinite; }
.portal-hero-neri__resting img { animation: portal-neri-rest 5.8s cubic-bezier(.45,.05,.55,.95) infinite; transform-origin: 50% 70%; }
.portal-hero-neri__resting::before { content: ""; position: absolute; z-index: -1; inset: -42%; border-radius: 50%; opacity: .28; background: radial-gradient(circle, rgba(255,255,255,.56), rgba(87,215,232,.18) 42%, transparent 70%); animation: portal-neri-glow 5.2s ease-in-out infinite alternate; }
.portal-hero-neri__spark { position: absolute; right: -12%; top: 5%; width: .42rem; aspect-ratio: 1; border-radius: 50%; background: rgba(255,255,255,.85); box-shadow: 0 0 12px rgba(255,255,255,.7); animation: portal-neri-spark 5.8s ease-in-out -2s infinite; }
.portal-hero.is-neri-animating .portal-hero-neri__resting { opacity: 0; }
.portal-hero.is-page-hidden .portal-hero-neri img, .portal-hero.is-page-hidden .portal-hero-neri__resting::before, .portal-hero.is-page-hidden .portal-hero-neri__spark { animation-play-state: paused; }
@keyframes portal-neri-swim { 0%,100% { transform:translate3d(0,2px,0) rotate(-1.5deg) scale(.99,1.012); } 17% { transform:translate3d(4px,-8px,0) rotate(1deg) scale(1.015,.988); } 36% { transform:translate3d(1px,-3px,0) rotate(1.8deg) scale(.995,1.014); } 58% { transform:translate3d(-4px,-12px,0) rotate(-.8deg) scale(1.018,.985); } 79% { transform:translate3d(3px,-6px,0) rotate(-1.6deg) scale(.994,1.015); } }
@keyframes portal-neri-rest { 0%,100% { transform:translate3d(0,1px,0) rotate(-1.4deg) scale(1); } 22% { transform:translate3d(3px,-7px,0) rotate(.7deg) scale(1.01,.992); } 47% { transform:translate3d(-2px,-3px,0) rotate(1.4deg) scale(.996,1.01); } 71% { transform:translate3d(-4px,-9px,0) rotate(-.8deg) scale(1.013,.99); } 88% { transform:translate3d(2px,-5px,0) rotate(-1.5deg) scale(.998,1.008); } }
@keyframes portal-neri-glow { to { opacity: .48; transform: scale(1.08); } }
@keyframes portal-neri-spark { 0%,72%,100% { opacity: 0; transform: translate3d(0,5px,0) scale(.35); } 80%,90% { opacity: .85; transform: translate3d(-4px,-5px,0) scale(1); } }
@keyframes portal-neri-fallback-show { to { opacity: 1; } }
.portal-hero__inner { position: relative; z-index: 3; min-height: 100vh; min-height: 100svh; padding: clamp(7rem, 12vh, 9rem) 0 clamp(2rem, 5vh, 4rem); display: grid; grid-template-rows: auto 1fr auto; }
.portal-hero__index { justify-self: end; font-size: .68rem; font-weight: 700; letter-spacing: .15em; }
.portal-hero__brand { align-self: center; justify-self: center; width: min(48vw, 690px); color: #fff; filter: drop-shadow(0 2px 18px rgba(3,76,154,.22)); }
.portal-logo-svg { width: 100%; height: auto; overflow: visible; }
.portal-logo-svg path { fill: currentColor; fill-opacity: 0; stroke: currentColor; stroke-width: .38; stroke-dasharray: 900; stroke-dashoffset: 900; animation: portal-logo-draw 1.6s cubic-bezier(.55,.05,.35,1) forwards, portal-logo-fill .6s ease forwards; }
.portal-logo-svg path:nth-child(1) { animation-delay: .08s, 1.05s; }.portal-logo-svg path:nth-child(2) { animation-delay: .14s, 1.11s; }.portal-logo-svg path:nth-child(3) { animation-delay: .2s, 1.17s; }.portal-logo-svg path:nth-child(4) { animation-delay: .26s, 1.23s; }.portal-logo-svg path:nth-child(5) { animation-delay: .32s, 1.29s; }.portal-logo-svg path:nth-child(6) { animation-delay: .38s, 1.35s; }.portal-logo-svg path:nth-child(7) { animation-delay: .44s, 1.41s; }.portal-logo-svg path:nth-child(8) { animation-delay: .5s, 1.47s; }.portal-logo-svg path:nth-child(9) { animation-delay: .56s, 1.53s; }.portal-logo-svg path:nth-child(10) { animation-delay: .62s, 1.59s; }.portal-logo-svg path:nth-child(11) { animation-delay: .68s, 1.65s; }.portal-logo-svg path:nth-child(12) { animation-delay: .74s, 1.71s; }
@keyframes portal-logo-draw { to { stroke-dashoffset: 0; } } @keyframes portal-logo-fill { to { fill-opacity: 1; stroke-opacity: 0; } }
.portal-hero__content { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--portal-gutter); align-items: end; padding-bottom: clamp(3.5rem, 7vh, 6rem); }
.portal-hero h1 { grid-column: 1 / span 6; font-size: clamp(1.65rem, 2.5vw, 3rem); font-weight: 500; letter-spacing: .06em; line-height: 1.55; }
.portal-hero__fields { grid-column: 8 / -1; padding-bottom: .4rem; font-size: clamp(.66rem, .8vw, .82rem); font-weight: 700; letter-spacing: .1em; line-height: 1.8; }
.portal-hero__scroll { position: absolute; right: 0; bottom: clamp(5rem, 8vh, 7rem); display: flex; gap: 1.5rem; align-items: center; min-height: 44px; font-size: .68rem; font-weight: 700; letter-spacing: .14em; }
.portal-hero__waves { position: absolute; z-index: 2; left: 0; right: 0; bottom: -2px; height: clamp(48px, 5vw, 76px); overflow: hidden; pointer-events: none; }
.portal-hero__wave { position: absolute; left: -10%; bottom: -2px; display: block; width: 120%; max-width: none; height: calc(100% + 3px); transform-origin: 50% 100%; will-change: transform; }
.portal-hero__wave--back { color: #57d7e8; opacity: .3; animation: portal-boundary-wave-back 7.5s ease-in-out infinite alternate; }
.portal-hero__wave--front { color: #f5f3eb; animation: portal-boundary-wave-front 5.8s ease-in-out -1.8s infinite alternate; }
@keyframes portal-boundary-wave-back { from { transform: translate3d(-1.5%, 0, 0) scaleY(.94); } to { transform: translate3d(1.5%, 0, 0) scaleY(1.04); } }
@keyframes portal-boundary-wave-front { from { transform: translate3d(1.2%, 0, 0) scaleY(.96); } to { transform: translate3d(-1.2%, 0, 0) scaleY(1.05); } }

/* Intro */
.portal-intro { position: relative; overflow: hidden; background: linear-gradient(160deg, rgba(245,243,235,.96) 0 48%, rgba(223,245,244,.92) 100%); }
.portal-intro__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--portal-gutter); align-items: center; }
.portal-intro > .portal-shell > .portal-section-label { grid-column: 1 / span 2; align-self: start; }
.portal-intro__copy { grid-column: 3 / span 6; position: relative; z-index: 1; }
.portal-intro__copy h2 { font-size: clamp(2.7rem, 6vw, 6.25rem); font-style: normal; font-weight: 400; line-height: .96; letter-spacing: .035em; }
.portal-intro__copy h2 span { display: block; white-space: nowrap; }
body.home .portal-intro__copy > p { max-width: 45rem; margin: clamp(2.5rem, 5vw, 5rem) 0 2vw; font-size: clamp(1rem, 1.3vw, 1.25rem); line-height: 2.1; }
.portal-intro__map { position: absolute; inset: 5% -4% -10%; color: rgba(8,123,204,.62); opacity: .2; pointer-events: none; }
.portal-intro__map svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: .72; transform: scale(1.34); transform-origin: 67% 50%; }
.portal-intro-line { vector-effect: non-scaling-stroke; stroke-dasharray: 1200; stroke-dashoffset: 1200; transform-box: fill-box; transform-origin: center; }.portal-intro-line--land { stroke: rgba(87,215,232,.78); stroke-width: 1.1; }.portal-intro-line--deep { stroke: rgba(3,76,154,.7); stroke-width: .8; }.portal-intro-line--navy { stroke: rgba(3,48,112,.58); stroke-width: 1; }
.portal-intro-light { fill: rgba(87,215,232,.82); stroke: none; animation: portal-intro-pulse 4.8s ease-in-out infinite alternate; }.portal-intro-light--navy { fill: rgba(3,48,112,.72); }.portal-intro-light--deep { fill: rgba(8,123,204,.68); animation-delay: -2s; }.portal-intro-orbiter { fill: rgba(3,76,154,.76); stroke: none; }
@keyframes portal-intro-pulse { to { opacity: .25; } }
.portal-character { display: block; width: 100%; height: auto; pointer-events: none; user-select: none; }

/* Section headers */
.portal-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: clamp(3rem, 7vw, 7rem); }
.portal-section-heading h2 { margin-top: 1.1rem; font-size: clamp(2.8rem, 6.8vw, 7.25rem); font-style: normal; font-weight: 400; letter-spacing: .04em; line-height: .96; }

/* Selected works */
.portal-selected { position: relative; border-top: 1px solid var(--portal-line); background: linear-gradient(180deg, #e9f8f7 0%, var(--portal-paper) 100%); }
.portal-selected > .portal-shell { position: relative; z-index: 2; }
.portal-section-art { position: absolute; z-index: 0; inset: 0; overflow: hidden; pointer-events: none; }
.portal-section-art svg { position: absolute; width: min(90vw, 1200px); fill: none; stroke: rgba(3,76,154,.2); stroke-width: 1; }
.portal-section-art--selected svg { right: -18%; top: 12%; }.portal-section-art--selected { opacity: .72; }
.portal-planet { position: absolute; display: block; border-radius: 50%; border: 1px solid rgba(255,255,255,.68); box-shadow: inset -22px -20px 55px rgba(3,76,154,.12); }
.portal-planet--large { width: min(46vw, 650px); aspect-ratio: 1; right: -24%; top: 4%; background: radial-gradient(circle at 30% 25%, rgba(255,255,255,.8), rgba(87,215,232,.2) 38%, rgba(8,123,204,.08) 68%, transparent 70%); }
.portal-signal { position: absolute; width: 11px; aspect-ratio: 1; border-radius: 50%; box-shadow: 0 0 24px 7px currentColor; }.portal-signal--yellow { color: var(--portal-yellow); background: currentColor; left: 8%; top: 22%; }.portal-signal--pink { color: var(--portal-pink); background: currentColor; right: 18%; bottom: 18%; }
.portal-selected::after { content: "OBSERVATION / 03—06 / CURRENT 057"; position: absolute; z-index: 1; right: 4vw; top: 5rem; color: rgba(3,76,154,.5); font-size: .62rem; font-style: italic; letter-spacing: .16em; writing-mode: vertical-rl; }
.portal-selected__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(3rem, 7vw, 8rem) var(--portal-gutter); }
.portal-work--feature { grid-column: span 12; }.portal-work--pair { grid-column: span 6; }
.portal-work--feature .portal-work__link { width: min(100%, 1180px); }.portal-work--feature:nth-child(4) .portal-work__link { margin-left: auto; }
.portal-work__link { display: block; }
.portal-work__image { position: relative; overflow: hidden; width: 100%; aspect-ratio: 4 / 3; background: #e7e8e5; }
.portal-work__image.has-image { display: grid; place-items: center; margin-bottom: 5%; }
.portal-work__image.has-image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--portal-image-position, center); }
.portal-work__fallback { background: radial-gradient(circle at 70% 25%, rgba(233,168,200,.9), transparent 28%), radial-gradient(circle at 24% 75%, rgba(85,214,208,.9), transparent 35%), linear-gradient(135deg, var(--portal-blue), var(--portal-purple) 55%, var(--portal-night)); }
.portal-work__image::before, .portal-work__image::after, .portal-work__image span { content: ""; position: absolute; }
.portal-work__image.has-image::before, .portal-work__image.has-image::after { display: none; }
.portal-work__image::before { inset: 8% 10%; border: 1px solid rgba(255,255,255,.52); border-radius: 50%; transform: rotate(-17deg); }
.portal-work__image::after { width: 42%; aspect-ratio: 1; right: 8%; top: 12%; border-radius: 50%; background: rgba(255,255,255,.16); backdrop-filter: blur(10px); }
.portal-work__image span { width: 70%; height: 30%; left: -8%; bottom: 10%; transform: rotate(-8deg); background: rgba(255,255,255,.18); }
.portal-work__label { margin-top: 1.25rem; color: rgba(17,18,24,.65); }
.portal-work h3 { margin-top: .25rem; font-size: clamp(1.2rem, 1.6vw, 1.5rem); font-weight: 500; letter-spacing: .01em; line-height: 1.35; }
.portal-work__image { transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.portal-work__link:hover .portal-work__image, .portal-work__link:focus-visible .portal-work__image { transform: scale(1.012); }
.portal-selected__empty { grid-column: 1 / -1; padding-block: 4rem; border-block: 1px solid var(--portal-line); }

/* Planet stations */
.portal-work-station, .portal-project-station, .portal-about { position: relative; overflow: hidden; }
.portal-work-station { border-top: 1px solid rgba(8,123,204,.16); background: radial-gradient(circle at 88% 9%, rgba(255,212,90,.38), transparent 21%), linear-gradient(150deg, rgba(245,243,235,.98), rgba(188,235,234,.94)); }
.portal-work-station::after, .portal-project-station::after, .portal-contact::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: url("../img/common/noise.png") repeat; background-size: 300px 300px; }
.portal-work-station::after { z-index: 1; opacity: .065; mix-blend-mode: multiply; }
.portal-work-station > .portal-shell, .portal-project-station > .portal-shell, .portal-about > .portal-shell { position: relative; z-index: 2; }
.portal-section-art--work .portal-planet--aqua { width: 42vw; aspect-ratio: 1; right: -19%; top: -14%; background: radial-gradient(circle at 30% 28%, #fff, rgba(87,215,232,.52) 30%, rgba(8,123,204,.16) 65%, transparent 68%); }
.portal-section-art--work .portal-planet--aqua::before { content: ""; position: absolute; left: -20%; top: 32%; width: 140%; height: 36%; border: 1px solid rgba(3,76,154,.34); border-radius: 50%; transform: rotate(-16deg); }
.portal-section-art--work .portal-signal { left: auto; right: 12%; top: 17%; }
.portal-station-heading { display: grid; grid-template-columns: 8fr 4fr; align-items: end; gap: var(--portal-gutter); margin-bottom: clamp(4rem, 8vw, 8rem); }
.portal-station-heading h2 { margin-top: .5rem; font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; font-size: clamp(4.5rem, 9.5vw, 8.5rem); font-style: normal; font-weight: 400; letter-spacing: .04em; line-height: .92; }
.portal-station-genres { padding-bottom: .8rem; font-size: .72rem; font-style: italic; letter-spacing: .13em; }
.portal-work-areas { display: grid; grid-template-columns: repeat(2, 1fr); margin-bottom: 3.5rem; border-block: 1px solid var(--portal-line); }
.portal-work-area { min-width: 0; border-bottom: 1px solid var(--portal-line); }
.portal-work-area:nth-child(odd) { border-right: 1px solid var(--portal-line); }
.portal-work-area:nth-last-child(-n+2) { border-bottom: 0; }
.portal-work-area a { display: grid; grid-template-columns: minmax(9rem, 34%) 1fr; align-items: center; gap: clamp(1.25rem, 3vw, 3rem); min-height: clamp(15rem, 25vw, 24rem); padding: clamp(1.25rem, 3vw, 3rem); }
.portal-work-area__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: linear-gradient(135deg, var(--portal-cyan), var(--portal-blue)); }
.portal-work-area__media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--portal-image-position, center); transition: transform .45s ease; }
.portal-work-area__media > span { position: absolute; right: .7rem; bottom: .35rem; color: rgba(255,255,255,.82); font: italic 300 clamp(2.8rem,5vw,5rem)/1 Arial,sans-serif; }
.portal-work-area__media.is-fallback::before { content: ""; position: absolute; width: 70%; aspect-ratio: 1; border: 1px solid rgba(255,255,255,.65); border-radius: 50%; left: 15%; top: 12%; }
.portal-work-area--web .portal-work-area__media { background: linear-gradient(145deg,var(--portal-blue),var(--portal-purple)); }
.portal-work-area--illust .portal-work-area__media { background: linear-gradient(145deg,var(--portal-pink),var(--portal-coral)); }
.portal-work-area--goods .portal-work-area__media { background: linear-gradient(145deg,var(--portal-yellow),var(--portal-cyan)); }
.portal-work-area a:hover img, .portal-work-area a:focus-visible img { transform: scale(1.035); }
.portal-work-area p { font: italic 400 .63rem/1.4 Arial,sans-serif; letter-spacing: .14em; }
.portal-work-area h3 { margin-top: .7rem; font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; font-size: clamp(1.2rem,1.7vw,1.5rem); font-style: normal; font-weight: 500; line-height: 1.15; letter-spacing: .02em; overflow-wrap: anywhere; }
.portal-project-station { color: #fff; background: radial-gradient(circle at 82% 15%, rgba(245,163,211,.68), transparent 26%), radial-gradient(circle at 12% 86%, rgba(255,212,90,.25), transparent 18%), linear-gradient(145deg, #034c9a, #087bcc 58%, #57d7e8); }
.portal-project-station::after { z-index: 1; opacity: .13; mix-blend-mode: soft-light; }.portal-contact::after { z-index: 0; opacity: .12; mix-blend-mode: soft-light; }
.portal-contact::after { -webkit-mask-image: linear-gradient(145deg, rgba(0,0,0,.25), #000 38%, rgba(0,0,0,.48) 72%, #000); mask-image: linear-gradient(145deg, rgba(0,0,0,.25), #000 38%, rgba(0,0,0,.48) 72%, #000); }
.portal-section-art--projects svg { right: -8%; top: 4%; stroke: rgba(255,255,255,.38); }.portal-planet--coral { width: 28vw; aspect-ratio: 1; left: -10%; bottom: -8%; background: radial-gradient(circle at 32% 28%, rgba(255,255,255,.7), rgba(255,139,135,.52) 34%, rgba(245,163,211,.12) 68%, transparent 70%); }
.portal-character--projects { position: absolute; right: -2%; bottom: 4%; width: clamp(8rem, 14vw, 14rem); opacity: .22; transform: rotate(12deg); filter: blur(.2px); animation: portal-character-project 12s ease-in-out infinite; }
@keyframes portal-character-project { 0%, 100% { transform: translate3d(0, 0, 0) rotate(12deg); } 50% { transform: translate3d(-18px, -12px, 0) rotate(8deg); } }
.portal-projects-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: var(--portal-gutter); margin-bottom: 3.5rem; }
.portal-project-item { min-width: 0; }.portal-project-item:nth-child(2) { margin-top: clamp(1.5rem,3vw,3rem); }
.portal-project-item__link { display: block; color: inherit; }
.portal-project-item__media { position: relative; display: grid; place-items: center; width: 100%; min-height: 0; overflow: visible; aspect-ratio: 1 / 1; }
.portal-project-item__media::after { content: ""; position: absolute; inset: -7% -5%; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; transform: rotate(-9deg); pointer-events: none; }
.portal-project-item__media img { position:absolute; inset:0; display:block; width:100%; max-width:none; height:100%; min-height:0; border-radius:50%; object-fit:cover; object-position:var(--portal-image-position,center); transition:transform .7s cubic-bezier(.22,.61,.36,1); }
.portal-project-item__link:hover .portal-project-item__media img, .portal-project-item__link:focus-visible .portal-project-item__media img { transform:scale(1.04); }
.portal-project-item__text > p:first-child { margin-top: 1rem; font-family: Arial, Helvetica, sans-serif; font-size: .63rem; font-style: italic; letter-spacing: .12em; }
.portal-project-item h3 { max-width: 100%; margin-top: .1rem; overflow-wrap: anywhere; font-family: "Fredoka", "Zen Kaku Gothic New", sans-serif; font-size: clamp(1.2rem,2vw,1.5rem); font-style: normal; font-weight: 500; letter-spacing: .02em; line-height: 1.15; }
.portal-project-item__description { max-width: 25rem; margin-top: 1rem; font-size: .9rem; line-height: 1.8; }
.portal-projects-note { font-size: .78rem; opacity: .72; letter-spacing: .04em; }
.portal-station-heading--light, .portal-project-station .portal-section-label { color: #fff; }


/* Journal */
.portal-journal { position: relative; background: var(--portal-paper); }
.portal-journal > .portal-shell { position: relative; z-index: 1; }
.portal-journal::before { content: ""; position: absolute; width: 52vw; aspect-ratio: 1; right: -35%; top: -27%; border-radius: 50%; border: 1px solid rgba(8,123,204,.28); background: radial-gradient(circle at 25% 30%, rgba(255,255,255,.8), rgba(87,215,232,.16) 45%, transparent 70%); }
.portal-journal::after { content: ""; position: absolute; right: -38%; top: 5%; width: 60vw; height: 18vw; border: 1px solid rgba(8,123,204,.3); border-radius: 50%; transform: rotate(-18deg); pointer-events: none; }
.portal-journal .portal-section-heading h2 { font-size: clamp(2.6rem, 5.8vw, 6.25rem); }
.portal-journal__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--portal-gutter); }
.portal-photo__image { aspect-ratio: 4 / 3; margin-bottom: 1.2rem; background: #ccd1d6; transition: transform .35s ease; }
.portal-photo__image { overflow: hidden; }
.portal-photo__image img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--portal-image-position, center); }
.portal-photo__image.is-fallback { background: radial-gradient(circle at 68% 28%, rgba(245,243,235,.9), transparent 18%), linear-gradient(145deg, var(--portal-cyan), var(--portal-blue)); }
.portal-photo a:hover .portal-photo__image, .portal-photo a:focus-visible .portal-photo__image { transform: scale(1.012); }
.portal-photo time { color: rgba(17,18,24,.55); }
.portal-photo h3 { margin-top: .35rem; font-size: clamp(1.1rem, 1.5vw, 1.5rem); font-weight: 500; }
.portal-journal__empty { grid-column: 1 / -1; padding-block: 4rem; border-block: 1px solid var(--portal-line); }

/* About */
.portal-about { border-top: 1px solid var(--portal-line); background: linear-gradient(155deg, #faf9f4 0%, var(--portal-paper) 58%, #edf9f8 100%); }
.portal-about__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--portal-gutter); align-items: start; }
.portal-about__grid > .portal-section-label { grid-column: span 2; align-self: start; }
.portal-about__content { grid-column: span 6; }
.portal-about__portrait { grid-column: span 2; margin: 0; align-self: end; }
.portal-about__portrait img { display:block;width:100%;height:auto;aspect-ratio:380/450;object-fit:cover;object-position:center; }
.portal-about__grid > .portal-text-link { grid-column: 10 / span 3; justify-self: end; align-self: end; }
.portal-about-logo { width: min(34vw, 440px); color: var(--portal-blue); line-height: 1; }.portal-about-logo .portal-logo-svg { width: 100%; margin-bottom: clamp(1.25rem, 2.5vw, 2.5rem); }.portal-about-logo .portal-logo-svg path { animation-play-state: paused; }.portal-about.is-logo-visible .portal-about-logo .portal-logo-svg path { animation-play-state: running; }
.portal-about__content > p { max-width: 42rem; margin-top: clamp(2.5rem, 5vw, 5rem); font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 2; }
.portal-about__fields { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1.5rem;margin:2.5rem 0 0;padding:1.5rem 0 0;border-top:1px solid var(--portal-line);list-style:none;font:italic 400 .7rem/1.5 Arial,sans-serif;letter-spacing:.1em; }

.home-service-cta { position:relative;padding:clamp(4.5rem,8vw,7.5rem) 0;border-top:1px solid var(--portal-line);background:linear-gradient(145deg,#faf9f4 0%,#eef9f8 100%); }
.home-service-cta::before { content:"";position:absolute;right:8%;top:18%;width:clamp(6rem,12vw,11rem);aspect-ratio:1;border:1px solid rgba(8,123,204,.2);border-radius:50%; }
.home-service-cta::after { content:"";position:absolute;right:5%;top:42%;width:clamp(9rem,18vw,17rem);height:clamp(2.5rem,5vw,4.5rem);border:1px solid rgba(3,76,154,.16);border-radius:50%;transform:rotate(-12deg); }
.home-service-cta__inner { position:relative;z-index:1; }
.home-service-cta__label { margin-bottom:clamp(2rem,4vw,3.5rem); }
.home-service-cta__content { display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:clamp(3rem,8vw,9rem);padding-top:clamp(1.5rem,3vw,2.5rem);border-top:1px solid var(--portal-line); }
.home-service-cta h2 { max-width:22em;margin:0;font-family:"Zen Kaku Gothic New",sans-serif;font-size:clamp(1.55rem,2.6vw,2.375rem);font-weight:400;line-height:1.5;letter-spacing:.04em; }
.home-service-cta__content p { margin-top:1rem;font-size:clamp(.95rem,1.1vw,1.05rem); }
.home-service-cta__link { display:inline-flex;align-items:center;justify-content:space-between;gap:clamp(2rem,5vw,5rem);min-width:min(100%,15rem);min-height:48px;padding:.5rem 0;border-bottom:1px solid currentColor;color:var(--portal-blue);font:500 .75rem/1 "Fredoka",Arial,sans-serif;letter-spacing:.1em; }
.home-service-cta__link .link-arrow { transition:transform .25s ease; }
.home-service-cta__link:hover .link-arrow,.home-service-cta__link:focus-visible .link-arrow { transform:translate(3px,-3px); }

/* Contact and footer */
.portal-contact { position: relative; overflow: hidden; padding-block: var(--portal-section-space); color: #fff; background: radial-gradient(circle at 80% 34%,rgba(245,163,211,.38),transparent 25%),radial-gradient(circle at 15% 74%,rgba(255,212,90,.18),transparent 17%),linear-gradient(145deg, #034c9a, #087bcc 58%, #57d7e8); }
.portal-contact__glow { position: absolute; width: 70vw; height: 45vw; right: -15%; bottom: -35%; border-radius: 50%; filter: blur(65px); background: linear-gradient(90deg, var(--portal-cyan), var(--portal-coral), var(--portal-pink)); opacity: .5; }
.portal-contact__inner { position: relative; z-index: 1; }
.portal-contact h2 { margin-top: clamp(4rem, 8vw, 8rem); font-size: clamp(3.8rem, 9.5vw, 8.5rem); font-style: normal; font-weight: 400; letter-spacing: .04em; line-height: .94; }
.portal-character-wrap--contact { position: absolute; z-index: 1; left: 1%; top: clamp(10.5rem, 18vw, 16.5rem); width: clamp(7rem, 11vw, 10.5rem); pointer-events: none; }
.portal-character--contact { filter: drop-shadow(0 16px 20px rgba(3,48,112,.2)); animation: portal-character-float 6.5s ease-in-out infinite; }
@keyframes portal-character-float { 0%, 100% { transform: translate3d(0, 0, 0) rotate(-3deg); } 50% { transform: translate3d(5px, -18px, 0) rotate(4deg); } }
.portal-contact__copy { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--portal-gutter); margin-top: clamp(4rem, 8vw, 8rem); }
.portal-contact__copy p { grid-column: 7 / span 5; font-size: clamp(.95rem, 1.15vw, 1.1rem); line-height: 2; }
.portal-contact__form { width: min(100%, 980px); margin: clamp(4rem,7vw,7rem) auto 0; padding: clamp(2.5rem,6vw,6rem); border: 1px solid rgba(255,255,255,.45); border-radius: clamp(1.5rem,4vw,3.5rem); color: var(--portal-blue); background: rgba(245,243,235,.94); box-shadow: 0 22px 70px rgba(3,76,154,.15); }
.portal-contact__form form, .portal-contact__unavailable { width: min(100%, 680px); margin-inline: auto; }
.portal-contact__form label { display: block; margin-bottom: 2rem; font-size: .82rem; font-weight: 500; letter-spacing: .04em; }
.portal-contact__form input:not([type="submit"]), .portal-contact__form select, .portal-contact__form textarea { width: 100%; margin-top: .55rem; padding: .9rem 1rem; border: 0; border-bottom: 1px solid rgba(8,123,204,.72); border-radius: .7rem .7rem 0 0; outline: 0; color: var(--portal-ink); background: rgba(255,255,255,.62); font: inherit; }
.portal-contact__form textarea { min-height: 12rem; resize: vertical; }
.portal-contact__form input:focus, .portal-contact__form select:focus, .portal-contact__form textarea:focus { border-color: var(--portal-blue); background: #fff; }
.portal-contact__form input[type="submit"] { display:block; width:min(100%,20rem); min-width:14rem; min-height:3.5rem; margin-inline:auto; padding:.8rem 2rem; border:1px solid var(--portal-blue); border-radius:0; color:var(--portal-blue); background:transparent; font:inherit; cursor:pointer; }
.portal-contact__form input[type="submit"]:hover, .portal-contact__form input[type="submit"]:focus-visible { color: #fff; background: var(--portal-blue); }
.portal-contact__form .wpcf7-spinner { background: rgba(8,123,204,.45); }.portal-contact__form .wpcf7-response-output { margin-inline: 0; }.portal-contact__unavailable a { text-decoration: underline; }
.portal-contact__form .wpcf7-not-valid-tip { display: block; max-width: 100%; margin-top: .45rem; color: #b52d45; font-size: .82rem; line-height: 1.6; overflow-wrap: anywhere; }
.portal-footer { position: relative; z-index: 2; isolation: isolate; color: #fff; background: #034c9a; }
.portal-footer__inner { position: relative; z-index: 1; min-height: 150px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 2rem; }
.portal-footer__brand { display:flex;align-items:center;width:clamp(6.5rem,9vw,9rem);min-height:44px; }.portal-footer__brand img {display:block;width:100%;height:auto;filter:brightness(0) invert(1);}
.portal-footer__links { display: flex; gap: 2rem; font-size: .68rem; font-weight: 700; letter-spacing: .12em; }
.portal-footer__links a { display: flex; align-items: center; min-height: 44px; }
.portal-footer__copyright { justify-self: end; font-size: .65rem; letter-spacing: .1em; }

@media (max-width: 767px) {
  :root { --portal-shell: calc(100vw - 2.5rem); --portal-section-space: 6.5rem; --portal-gutter: 1rem; }
  body.home { font-size: 16.5px; line-height: 1.8; }
  .portal-hero__inner { padding-top: 6rem; padding-bottom: 1.5rem; }
  .portal-hero__index { justify-self: start; }
  .portal-hero__brand { align-self: center; width: min(68vw, 340px); line-height: .8; }
  .portal-hero__content { display: block; align-self: start; margin-top: 2rem; padding-bottom: 3rem; }
  .portal-hero h1 { font-size: clamp(1.45rem, 7vw, 2.1rem); }
  .portal-hero__fields { margin-top: 1.5rem; font-size: .62rem; }
  .portal-hero__scroll { display: none; }
  .portal-hero-neri__floating, .portal-hero-neri__resting { width: clamp(4.25rem, 18vw, 5.5rem); }
  .portal-hero-neri__floating { left: -6rem; bottom: 18%; }
  .portal-hero-neri__resting { right: 1.25rem; bottom: clamp(8.25rem, 19vh, 10rem); }
  .portal-intro__grid, .portal-about__grid { display: block; }
  .portal-intro__copy { margin-top: 3rem; }.portal-intro__copy h2 { font-size: clamp(1.9rem, 9vw, 3.2rem); line-height: 1.12; text-wrap: balance; }.portal-intro__copy h2 span + span { margin-top: .12em; }body.home .portal-intro__copy > p { margin-top: 2.5rem; margin-bottom: 2vw; font-size: 1rem; }
  .portal-intro__map { inset: 10% -45% -4% -30%; width: auto; margin: 0; opacity: .16; }
  .portal-intro__map svg { transform: scale(1.15); }
  .portal-section-heading { display: block; }.portal-section-heading .portal-text-link { margin-top: 2rem; }.portal-section-heading h2 { font-size: clamp(2.35rem, 10.5vw, 4.2rem); line-height: 1; letter-spacing: .04em; }
  .portal-selected__grid { display: block; }.portal-work { margin-bottom: 2.5rem; }.portal-work:last-child { margin-bottom: 0; }
  .portal-work__image { aspect-ratio: 4 / 3; }.portal-work__image.has-image { margin-bottom: 5vw; }
  .portal-journal__grid { display: block; }.portal-photo { margin-bottom: 3rem; }.portal-photo:last-child { margin-bottom: 0; }
  .portal-about__content { margin-top: 3.5rem; }.portal-about-logo { width: min(60vw, 280px); }.portal-about__content > p { margin-top: 3rem; font-size: 1rem; }.portal-about__portrait { width:min(62vw,260px);margin:3rem 0 0 auto; }.portal-about__grid > .portal-text-link { margin-top: 2rem; }
	.home-service-cta { padding-block:4.5rem; }.home-service-cta::before { right:-2rem;top:1.5rem;opacity:.6; }.home-service-cta::after { right:-4rem;top:3rem;opacity:.6; }.home-service-cta__label { margin-bottom:2rem; }.home-service-cta__content { display:block;padding-top:2rem; }.home-service-cta h2 { max-width:15em;font-size:clamp(1.4rem,7vw,1.9rem); }.home-service-cta__link { width:min(100%,18rem);margin-top:2.25rem; }
  .portal-contact h2 { font-size: clamp(2.9rem, 13vw, 4.7rem); line-height: .96; letter-spacing: .04em; }.portal-character-wrap--contact { left:auto;right:.25rem;top:8.75rem;width:clamp(4.8rem,22vw,6.5rem);opacity:.86; }.portal-contact__copy { display: block; margin-top: 7rem; }.portal-contact__copy p { font-size: 1rem; }.portal-contact__form { margin-top: 3.5rem; padding: 2rem 1.25rem; border-radius: 1.5rem; }.portal-contact__form label { font-size: .9rem; }
  .portal-contact__form input[type="submit"] { width: min(100%, 20rem); }
  .portal-footer__inner { padding-block: 2.5rem; display: flex; flex-wrap: wrap; justify-content: space-between; }.portal-footer__links { order: 3; width: 100%; gap: 1rem; flex-wrap: wrap; }.portal-footer__copyright { margin-left: auto; }
	.portal-hero__background { inset: -2%; }.portal-hero__brand { filter: drop-shadow(0 2px 10px rgba(3,76,154,.18)); }.portal-hero__orbits { width: 118vw; opacity: .25; }
	.portal-hero__orbits { animation:portal-mobile-orbit-drift 26s linear infinite;transform-origin:50% 50%; }
	.portal-hero__wave { left: -40%; width: 180%; }
	.portal-intro__map svg { animation:portal-mobile-intro-drift 11s ease-in-out infinite alternate; }
	.portal-section-art--selected { opacity: .4; }.portal-planet--large { width: 90vw; right: -60%; top: 9%; }.portal-selected::after { display: none; }
	.portal-station-heading { display: block; }.portal-station-genres { margin-top: 2rem; }.portal-station-heading h2 { font-size: clamp(3rem,13vw,4.8rem); line-height: 1.1; }
	.portal-work-areas, .portal-projects-grid { display: block; }.portal-work-area { border:0;border-bottom:1px solid var(--portal-line); }.portal-work-area:nth-child(odd) { border-right:0; }.portal-work-area:last-child { border-bottom:0; }.portal-work-area a {grid-template-columns:minmax(7rem,36%) 1fr;min-height:12rem;padding:1.25rem 0;}.portal-work-area h3{font-size:clamp(1.2rem,6vw,1.5rem);}.portal-project-item { margin: 0 0 4rem; }.portal-project-item:nth-child(2) { margin-top: 0; }
	.portal-work-area:nth-last-child(2) { border-bottom:1px solid var(--portal-line); }
	.portal-project-item__media { width: min(82vw, 420px); margin-inline: auto; }.portal-project-item h3 { font-size: clamp(1.2rem,6vw,1.5rem); }
	.portal-planet--coral { width: 70vw; left: -45%; }.portal-section-art--projects svg { width: 140vw; right: -65%; }
	.portal-character--projects { right:-5%;bottom:2%;width:8rem;opacity:.18; }
	body.home h3 { font-size: .875rem; }
	body.home p { margin-bottom: 2vw; }
}

@keyframes portal-mobile-orbit-drift {
	from { transform:translate(-50%,-50%) rotate(-2deg); }
	to { transform:translate(-50%,-50%) rotate(6deg); }
}

@keyframes portal-mobile-intro-drift {
	from { transform:translate3d(-1.5%,1%,0) scale(1.15) rotate(-.6deg); }
	to { transform:translate3d(1.5%,-1%,0) scale(1.17) rotate(.6deg); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
	.portal-hero__orbits, .portal-hero__brand { transform: none; }
	.portal-logo-svg path { animation: none; stroke-dashoffset: 0; fill-opacity: 1; stroke-opacity: 0; }
	.portal-intro-line { stroke-dashoffset: 0; }
	.portal-character { animation: none !important; }
	.portal-hero-neri__floating { display: none !important; }
	.portal-hero-neri__resting { opacity: 1 !important; transform: none !important; }
	.portal-hero-neri__resting img, .portal-hero-neri__resting::before, .portal-hero-neri__spark { animation: none !important; }
	.portal-hero__wave { animation: none !important; }
}
