
.avatar{ width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:12px; border:1px solid rgba(255,255,255,.14); box-shadow:0 6px 18px rgba(0,0,0,.35); }
.role{ font-size:var(--fs-12); opacity:.78; margin-top:6px }
.en-name{ margin-top:6px; font-weight:600 }

:root{
  --btn-gap: 8px;
  --btn-padding-vert: 10px;
  --btn-padding-horz: 14px;
  --btn-radius: 12px;
  --btn-border-base: rgba(255,255,255,.10);
  --btn-bg-top: rgba(255,255,255,.08);
  --btn-bg-bottom: rgba(255,255,255,.04);
  --btn-bg-hover-top: rgba(255,255,255,.12);
  --btn-bg-hover-bottom: rgba(255,255,255,.06);
  --btn-transition-fast: .06s;
  --btn-transition-base: .18s;
}

.btn{
  display: inline-flex;
  align-items: center;
  gap: var(--btn-gap);
  padding: var(--btn-padding-vert) var(--btn-padding-horz);
  border-radius: var(--btn-radius);
  border: 1px solid var(--btn-border-base);
  background: linear-gradient(180deg, var(--btn-bg-top), var(--btn-bg-bottom));
  color: inherit;
  text-decoration: none;
  transition: transform var(--btn-transition-fast) ease, background var(--btn-transition-base) ease, box-shadow var(--btn-transition-base) ease;
}

.btn:hover{
  background: linear-gradient(180deg, var(--btn-bg-hover-top), var(--btn-bg-hover-bottom));

  border: 1px solid rgba(var(--blue-light-rgb),0.9);

  box-shadow: 0 10px 26px rgba(2,6,23,0.36),
              0 0 18px rgba(var(--blue-light-rgb),0.16),
              0 0 6px rgba(var(--blue-light-rgb),0.28) inset;
}
.btn:focus-visible{ outline: 2px solid var(--ring-color); outline-offset: 2px }

.btn.primary{
  background: linear-gradient(180deg, var(--blue-medium), #0c95ad);
  color: #061015;
  border-color: transparent;
}
.btn.primary:hover{
  background: linear-gradient(180deg, #0c95ad, var(--blue-light));
  border-color: transparent;
  box-shadow: 0 10px 26px rgba(var(--blue-light-rgb),0.2);
}

.btn, .btn-icon, .btn-resume{ text-decoration: none }
.btn:hover, .btn:focus, .btn:active, .btn-icon:hover, .btn-icon:focus, .btn-resume:hover, .btn-resume:focus{ text-decoration: none }

.btn-icon{
  width: 42px;
  height: 42px;
  border-radius: var(--btn-radius);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,.10);
  background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01));
  color: var(--ink);
  transition: transform .08s cubic-bezier(.2,.9,.3,1), background var(--btn-transition-base) ease, box-shadow var(--btn-transition-base) ease, border-color .12s ease;
}
.btn-icon:hover{
  background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02));

  box-shadow: 0 8px 20px rgba(2,6,23,0.42),
              0 0 26px rgba(var(--blue-light-rgb),0.14),
              0 0 10px rgba(var(--blue-light-rgb),0.22) inset;
  border-color: rgba(var(--blue-light-rgb),0.9);
}
.btn-icon:focus-visible{ outline: 2px solid var(--ring-color); outline-offset: 2px; }
.btn-icon i{ font-size: 16px; }

.iconbar .btn-resume{ width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border-radius: var(--btn-radius); overflow: visible }
.iconbar .btn-resume .label{ display: none }

.btn-resume{
  background: linear-gradient(180deg, var(--pink-medium), var(--pink-light));
  color: #fff;
  border: 1px solid rgba(0,0,0,0.08);
  transition: box-shadow var(--btn-transition-base) ease, border-color .12s ease, color .12s ease, background .12s ease;
}
.btn-resume:hover{
  border-color: rgba(0,0,0,0.12);
  color: #fff;
  box-shadow: 0 10px 30px rgba(var(--pink-light-rgb),0.12), 0 0 18px rgba(var(--pink-light-rgb),0.06) inset;
  background: linear-gradient(180deg, var(--pink-dark), var(--pink-dark));
  border: 1px solid var(--pink-extra-light);
}

.back-nav {
  justify-self: start;
}

.input{ display:inline-block; width:100%; padding:10px 12px; border-radius:12px; border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.05); color:var(--ink); }
.input:focus-visible{ outline:2px solid var(--ring-color); outline-offset:2px }

.skills{ display:flex; flex-wrap:wrap; gap:8px; }

.badge{
  position:relative;
  display:inline-flex; align-items:center;
  padding:6px 10px;
  border-radius:9999px;
  font-size:12px;
  color:var(--ink);
  white-space:nowrap;

  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.018));
  border:1px solid rgba(255,255,255,.08);
  box-shadow:
    0 6px 16px rgba(0,0,0,.26),
    0 0 7px rgba(12,20,27,.16) inset;
  cursor: default
}

.badge::after{
  content:"";
  position:absolute; inset:-1px;
  border-radius:inherit;
  pointer-events:none;


  background: linear-gradient(90deg,
    rgba(var(--blue-light-rgb),0) 0%,
    rgba(var(--blue-light-rgb),.85) 40%,
    rgba(var(--blue-light-rgb),0) 80%);
  background-size: 200% 100%;
  background-position: 150% 0;
  opacity: 0;


  padding: 1px;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
          mask-composite: exclude;

  opacity: 0;
  transition: background-position .4s ease, opacity .2s ease;
}

.badge:hover::after,
.badge:focus-visible::after{
  background-position: 20% 0;
  opacity: 1;
}

.card{
  background:var(--card);
  border-radius:var(--radius);
  border:1px solid rgba(255,255,255,.08);
  box-shadow: 0 6px 18px rgba(0,0,0,.34);
  overflow:hidden;
}
.card + .card{ margin-top:0 }
.row{ display:flex; justify-content:space-between; align-items:flex-start; gap:var(--gap-2) }

.hero-card{
  position: relative;
  overflow: hidden;
}

.hero-card::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(120deg,
      rgba(var(--blue-light-rgb),0.15),
      transparent 40%,
      rgba(var(--pink-light-rgb),0.10)
    );
  mix-blend-mode: screen;
  opacity: .28;
}

.hero-card::after{
  content:"";
  position:absolute;
  inset:1px;
  border-radius:calc(var(--radius) - 1px);
  background-image:
    linear-gradient(transparent 90%, rgba(255,255,255,.06) 100%),
    radial-gradient(circle at 10% 0%, rgba(var(--blue-light-rgb),.18), transparent 60%);
  background-size:100% 4px, 120% 120%;
  opacity:.26;
  mix-blend-mode:soft-light;
  pointer-events:none;
}

.hero-top{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:var(--gap-4);
}

.hero-copy .kicker{
  font-size:10px;
  letter-spacing:.22em;
  text-transform:uppercase;
  opacity:.55;
  margin:0 0 4px;
}

.hero-copy .lede{
  margin:6px 0 0;
  opacity:.82;
}

.hero-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  justify-content:flex-end;
}

.hero-wip{
  margin-top:var(--gap-2);
  margin-bottom:var(--gap-3);
  background:var(--blue-dark);
}

.hero-wip::before,
.hero-wip::after{
  display:none;
}
.hero-wip .hero-wip-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--gap-3);
}

.content > section.rnd-section{
  margin-top:var(--gap-3);
}
.hero-wip .hero-copy h1{
  font-size:var(--fs-22);
  margin:0;
}
.wip-badge{
  font-size:11px;
  letter-spacing:.16em;
  text-transform:uppercase;
  opacity:.55;
  white-space:nowrap;
  flex-shrink:0;
}

.hero-frame{
  position:relative;
  margin:0 var(--gap-4) var(--gap-4);
  border-radius:12px;
  border:1px solid rgba(255,255,255,.06);
  background:var(--blue-dark);
  box-shadow:
    0 3px 20px rgba(0,0,0,.2),
    0 0 40px rgba(0,0,0,.2) inset;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  letter-spacing:.16em;
  text-transform:uppercase;
  opacity:.75;
}

.card.project{
  position:relative;
  transform: translateY(0) scale(1);
  will-change: transform, box-shadow;
  transition:
    transform .18s ease,
    box-shadow .18s ease,
    border-color .18s ease,
    background .18s ease;
}

.card.project::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  opacity:0;

  mix-blend-mode:screen;
  transition: opacity .18s ease;
}

.card.project:hover{

  border-color:rgba(var(--blue-light-rgb),.1);
  background: radial-gradient(circle at 0 0, rgba(var(--blue-medium-rgb),.24), transparent 50%),
              var(--card);
  box-shadow:
    0 14px 36px rgba(0,0,0,.2),
    0 0 18px rgba(0,0,0,.2) inset;
}

.card.project:hover::before{
  opacity:.55;
}

.card.project .pad{
  padding: var(--gap-3);
}

.card.project h3{
  font-size: var(--fs-18);
  letter-spacing:.04em;
}

.card.project .period{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.16em;
  opacity:.66;
}

.card.project .role{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.16em;
  margin-top:2px;
  opacity:.72;
}

.card.project p{
  margin:8px 0 4px;
  opacity:.88;
}

.card.project[data-tier="flagship"]::before{
  background:
    linear-gradient(135deg,
      rgba(var(--pink-light-rgb),.2),
      transparent 45%,
      rgba(var(--blue-light-rgb),.1)
    );
}

.card.project[data-tier="rnd"]::before{
  background:
    linear-gradient(135deg,
      rgba(var(--blue-medium-rgb),.2),
      transparent 50%);
}

.content > section{
  position:relative;
}

.content > section + section{
  margin-top:-4px;
}

.content > section > .pad:first-child{
  position:relative;
}

.content > section > .pad:first-child::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:1px;
  background:
    linear-gradient(90deg,
      transparent,
      rgba(var(--blue-light-rgb),.7) 0%,
      rgba(var(--blue-light-rgb),.0) 80%);
  opacity:1;
}

.project .thumb{ position:relative; display:block; overflow:hidden; border-radius:12px; border:1px solid rgba(255,255,255,.12); background: #0c141b; }
.project .thumb img{ width:100%; height:176px; object-fit:cover; display:block; filter: saturate(1.02) contrast(1.03); transition: transform .25s ease; }
.project .thumb:hover img{ transform: scale(1.02) }

.project ul{ margin:10px 0 12px 18px; line-height:1.6 }
.project p{ margin:8px 0 }

video.hero-media, figure.media{ width:100%; background: #0c141b }

video.hero-media{ aspect-ratio: 16/9; object-fit: cover }

.panel-inner .kanji rb { font-family: "Zen Kaku Gothic Antique", sans-serif; color: var(--blue-medium); opacity: .6; font-size: clamp(28px, 3.3vw, 40px); font-weight: 750; letter-spacing: .02em; margin-top: -13px; text-align: justify;}
.panel-inner ruby rt { color: var(--blue-medium); opacity: .5; font-weight: 750; margin-top: 6px; font-size: 15px; ruby-align: space-between; }
.panel-inner .en-name { margin-top: 8px; font-weight: 600; font-size: 32px; }
.panel-inner .role { margin-top: 2px; font-size: 15px; opacity: .78; }
.panel-inner .bio { margin-top: 10px; max-width: 36ch; }

.panel-inner .skills .badge{ background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.08); font-size: 12px; padding: 4px 10px; }

a:focus-visible, button:focus-visible { outline: 2px solid var(--ring-color); outline-offset: 2px; }

footer{ opacity:.75; font-size:12px; padding:var(--gap-4) 0 }

.tw-cursor {
  color: var(--blue-light);
  text-shadow: 0 0 4px var(--blue-light), 0 0 8px rgba(6, 216, 232, 0.4);
  font-weight: 400;
}
.btn-resume .tw-cursor {
  color: #fff;
  text-shadow: 0 0 4px rgba(255,255,255,.6), 0 0 8px rgba(255,255,255,.3);
}

.proj-section {
  border-top: 1px solid rgba(255,255,255,.07);
  margin-top: var(--gap-4);
  padding-top: var(--gap-4);
}

.proj-section-title {
  font-size: var(--fs-14);
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: .75;
  margin: 0 0 var(--gap-2);
}

.proj-methods {
  margin: var(--gap-2) 0 var(--gap-3) var(--gap-3);
  line-height: 1.65;
}
.proj-methods li + li {
  margin-top: var(--gap-2);
}
.proj-methods strong {
  color: var(--blue-extra-light);
  font-weight: 600;
}

.proj-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap-2);
  margin-top: var(--gap-3);
}

.proj-section-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap-2);
  margin-top: var(--gap-3);
}

.proj-video {
  margin: var(--gap-3) 0 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.proj-video > video {
  width: 100%;
  height: auto;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: var(--blue-dark);
  display: block;
}
.proj-video > figcaption {
  font-size: 11px;
  line-height: 1.5;
  opacity: .62;
  letter-spacing: .02em;
}

.proj-gallery {
  --gallery-row-h: 220px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap-2, 8px);
  margin-top: var(--gap-3);
}

.proj-gallery figure {

  flex: var(--ar, 1.5) var(--ar, 1.5) calc(var(--ar, 1.5) * var(--gallery-row-h));

  min-width: min(100%, calc(var(--ar, 1.5) * var(--gallery-row-h) * 0.55));
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.proj-gallery figure > img,
.proj-gallery figure > video {
  display: block;
  width: 100%;
  height: var(--gallery-row-h);
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.08);
  background: var(--blue-dark);
}

.proj-gallery figcaption {
  font-size: 11px;
  line-height: 1.5;
  opacity: .62;
  letter-spacing: .02em;
}

@media (max-width: 720px) {
  .proj-gallery { --gallery-row-h: 150px; }
}
@media (max-width: 460px) {
  .proj-gallery { --gallery-row-h: 120px; }
}

::view-transition-old(*) {
  animation: vt-demat 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
::view-transition-new(*) {
  animation: vt-mat 0.22s cubic-bezier(0.16, 1, 0.3, 1) both;
}

::view-transition-old(root) {
  animation: vt-xfade-out 0.25s ease forwards;
}
::view-transition-new(root) {
  animation: vt-xfade-in 0.25s ease forwards;
}

::view-transition-group(*) {
  animation-duration: 0.42s;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  overflow: hidden;
  border-radius: var(--radius);
  z-index: 1;
}
::view-transition-group(root) {
  animation-duration: 0.25s;
  animation-timing-function: ease;

  overflow: clip;
  border-radius: 0;
  z-index: 0;
}

::view-transition-group(mobile-bar) {
  z-index: 70;
  overflow: visible;
  border-radius: 0;
}
::view-transition-group(lang-fab) {
  z-index: 80;
  overflow: visible;
  border-radius: 0;
}

::view-transition-old(mobile-bar),
::view-transition-old(lang-fab) {
  animation: vt-xfade-out 0.2s ease forwards;
}
::view-transition-new(mobile-bar),
::view-transition-new(lang-fab) {
  animation: vt-xfade-in 0.2s ease forwards;
}

@keyframes vt-demat {
  0%   { clip-path: inset(0 0 0 0);    opacity: 1; }
  100% { clip-path: inset(0 0 100% 0); opacity: 0; }
}

@keyframes vt-mat {
  0%   { clip-path: inset(0 0 100% 0); opacity: 0; }
  100% { clip-path: inset(0 0 0 0);    opacity: 1; }
}

@keyframes vt-xfade-out { from { opacity: 1 } to { opacity: 0 } }
@keyframes vt-xfade-in  { from { opacity: 0 } to { opacity: 1 } }

@media (prefers-reduced-motion: reduce){
  *{ transition:none !important; animation:none !important }
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation-duration: 0s !important;
  }
}

.sr-only{
  position:absolute !important;
  width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0);
  white-space:nowrap; border:0;
}

.lang-fab{
  view-transition-name: lang-fab;
  position: fixed;
  left: 32px;
  bottom: 32px;
  z-index: 80;
  pointer-events: auto;
  transition: left .24s ease, bottom .24s ease;
}

.lang-fab .fab-btn{
  width: 52px;
  height: 52px;
  border-radius: 9999px;
  display:flex;
  align-items:center;
  justify-content:center;

  background: linear-gradient(180deg,
    rgba(var(--card-rgb),.8),
    rgba(var(--card-rgb),.4)
  );
  border: 1px solid rgba(255,255,255,.12);
  color: var(--blue-extra-light);
  font-size: 20px;
  line-height: 1;

  box-shadow:
    0 10px 26px rgba(0,0,0,.7),
    0 0 10px rgba(var(--blue-light-rgb),.16) inset;
  backdrop-filter: blur(8px);
  cursor: pointer;
  transition:
    box-shadow .18s ease,
    border-color .16s ease,
    background .16s ease,
    color .16s ease;
}

.lang-fab .fab-btn:hover{
  border-color: rgba(var(--blue-light-rgb),.7);
  color: var(--blue-extra-light);
  box-shadow:
    0 8px 30px rgba(0,0,0,.9),
    0 0 14px rgba(var(--blue-light-rgb),.22) inset;
}

.lang-fab .fab-btn:focus-visible{
  outline: 2px solid var(--ring-color);
  outline-offset: 3px;
}

.lang-fab .fab-label{
  letter-spacing: 0.03em;
  font-weight: 600;
}

.lang-fab .fab-ring{
  position:absolute;
  inset:0;
  transform-origin: 50% 50%;
  pointer-events: none;
}

.lang-fab .lang-chip{
  position:absolute;
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  border-radius: 9999px;

  display:flex;
  align-items:center;
  justify-content:center;

  font-size: 12px;
  font-weight: 600;
  color: var(--ink);

  background: linear-gradient(180deg,
    rgba(var(--card-rgb),.8),
    rgba(var(--card-rgb),.4)
  );
  border: 1px solid rgba(255,255,255,.12);
  color: var(--blue-extra-light);
  font-size: 16px;
  line-height: 1;

  box-shadow:
    0 3px 20px rgba(0,0,0,.5),
    0 0 10px rgba(var(--blue-light-rgb),.16) inset;
  backdrop-filter: blur(8px);


  transform: translate(-50%, -50%) translate(0, 0) scale(.4);
  opacity: 0;
  pointer-events: none;
  cursor: pointer;

  will-change: transform, opacity;
  transition:
    transform .22s cubic-bezier(.22,.68,0,.9),
    opacity .16s ease,
    border-color .16s ease,
    box-shadow .16s ease,
    color .16s ease;
}

.lang-fab[data-open="1"] .lang-chip{
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, -50%)
             translate(var(--tx, 0px), var(--ty, 0px))
             scale(1);
}

.lang-fab .lang-chip[data-current="1"]{
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -50%) scale(.4);
}

.lang-fab .lang-chip:hover{
  border-color: rgba(var(--blue-light-rgb), .65);
  color: var(--blue-extra-light);


  box-shadow:
    0 12px 30px rgba(0,0,0,.44),
    0 0 14px rgba(var(--blue-light-rgb), .22) inset;
}

.lang-fab .lang-chip[aria-pressed="true"]{
  border-color: rgba(var(--blue-light-rgb), .85);
  color: var(--blue-extra-light);
}

.lang-fab[data-open="1"] .fab-btn{
  border-color: rgba(var(--blue-light-rgb), .75);
  color: var(--blue-extra-light);

  box-shadow:
    0 12px 30px rgba(0,0,0,.42),
    0 0 14px rgba(var(--blue-light-rgb), .50)
    0 0 14px rgba(var(--blue-light-rgb), .50) inset;


  transition:
    box-shadow .18s ease,
    border-color .16s ease,
    color .16s ease;
}

@media (max-width: 499px){
  .lang-fab{
    left: 16px;
    bottom: 16px;
  }
}

.nda-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(12, 18, 24, .65);
  backdrop-filter: blur(3px);
  z-index: 2;
  pointer-events: none;
}
.nda-overlay i {
  font-size: 28px;
  color: var(--warn);
  opacity: .85;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,.5));
}

.card.nda-locked .thumb {
  position: relative;
}

.card.nda-locked {
  border-color: rgba(255, 197, 87, .15);
}

html[lang="zh"] body {
  font-family: "Noto Sans SC", Inter, system-ui, -apple-system, sans-serif;
}
html[lang="ja"] body {
  font-family: "Zen Kaku Gothic Antique", Inter, system-ui, -apple-system, sans-serif;
}
