.cutin-overlay {
  --cutin-entry-x: 0px;
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  place-items: center;
  padding: 18px;
  background: #0d3347a8;
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  touch-action: none;
  overscroll-behavior: contain;
  animation: cutin-backdrop-in 180ms ease-out both;
}
.cutin-overlay.is-leaving {
  opacity: 0;
  transition: opacity 180ms ease-in;
}
.cutin-stage {
  position: relative;
  isolation: isolate;
  width: min(940px, 100%);
  max-width: 100%;
  min-width: 0;
  max-height: calc(100dvh - 80px);
  overflow: auto;
  overscroll-behavior: contain;
  border: 5px solid #fffdf5;
  border-radius: 24px;
  box-shadow: 0 10px 0 #24565a66, 0 28px 70px #092c3d80;
  animation: cutin-stage-in 300ms cubic-bezier(.18, .9, .3, 1.12) both;
}
.cutin-skill .cutin-stage {
  display: grid;
  grid-template-columns: clamp(112px, 22vw, 190px) minmax(0, 1fr);
  align-items: center;
  gap: clamp(16px, 3vw, 34px);
  min-height: 230px;
  padding: clamp(15px, 2.7vw, 27px);
  color: #174348;
  background: linear-gradient(110deg,
    color-mix(in srgb, var(--cutin-accent, #f8cf72) 44%, white),
    #fffdf0 48%, #fff2cd 100%);
  border-bottom-color: var(--cutin-accent, #f8cf72);
  border-left: 8px solid var(--cutin-side-ink, #2a8b7c);
}
.cutin-self { --cutin-side-ink: #218477; --cutin-entry-x: -54px; }
.cutin-foe { --cutin-side-ink: #b45175; --cutin-entry-x: 54px; }
.cutin-foe .cutin-stage {
  background: linear-gradient(110deg,
    color-mix(in srgb, var(--cutin-accent, #f8cf72) 38%, #ffe7ec),
    #fffaf2 48%, #ffe9e9 100%);
}
.cutin-skill .cutin-eyebrow { color: var(--cutin-side-ink, #286d73); }
.cutin-skill .cutin-stage::before,
.cutin-result .cutin-stage::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: repeating-linear-gradient(-22deg, #fff8 0 3px, transparent 3px 32px);
  pointer-events: none;
}
.cutin-skill .cutin-stage::after {
  content: "✦";
  position: absolute;
  z-index: -1;
  right: 2%;
  top: -85px;
  color: color-mix(in srgb, var(--cutin-accent, #f8cf72) 30%, transparent);
  font: 300px/1 Georgia, serif;
  pointer-events: none;
}
.cutin-art-frame {
  width: 100%;
  aspect-ratio: 1;
  border: 6px solid #fffefa;
  border-radius: 16px;
  overflow: hidden;
  background: #dcefe8;
  box-shadow: 0 0 0 3px var(--cutin-accent, #f8cf72), 5px 9px 18px #27474355;
  transform: rotate(-4deg);
}
.cutin-art { display: block; width: 100%; height: 100%; object-fit: cover; }
.cutin-copy { min-width: 0; }
.cutin-chain {
  display: inline-block;
  margin: 0 0 6px;
  padding: 4px 11px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: #a3488b;
  color: #fff;
  font-size: clamp(12px, 1.6vw, 16px);
  font-weight: 900;
  box-shadow: 0 3px 0 #6c3269;
}
.cutin-eyebrow {
  display: block;
  color: #286d73;
  font-size: clamp(11px, 1.5vw, 15px);
  font-weight: 900;
  letter-spacing: .09em;
}
.cutin-title {
  margin: 4px 0 8px;
  color: #133a3d;
  font-size: clamp(23px, 4vw, 40px);
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.cutin-callout {
  display: inline-block;
  padding: 5px 15px;
  border-radius: 999px;
  background: #f9ce66;
  color: #573516;
  box-shadow: 0 3px 0 #c88b41;
  font-size: clamp(15px, 2.1vw, 22px);
  line-height: 1.15;
}
.cutin-effect {
  margin: 12px 0 0;
  color: #25474a;
  font-size: clamp(13px, 1.8vw, 18px);
  font-weight: 800;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.cutin-skip {
  position: absolute;
  top: max(14px, env(safe-area-inset-top));
  right: max(14px, env(safe-area-inset-right));
  z-index: 2;
  min-width: 86px;
  min-height: 44px;
  padding: 8px 12px;
  border: 2px solid #ffffffd9;
  border-radius: 999px;
  background: #164b58eb;
  color: #fffdf1;
  font-size: 14px;
  font-weight: 900;
  box-shadow: 0 4px 12px #12384066;
  cursor: pointer;
}
.cutin-skip:hover { background: #226879; }
.cutin-skip:focus-visible { outline: 3px solid #ffe384; outline-offset: 3px; }

.cutin-result .cutin-stage {
  width: min(760px, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 9px;
  padding: clamp(20px, 4vw, 42px);
  text-align: center;
}
.cutin-win .cutin-stage {
  color: #5a3d18;
  background: radial-gradient(circle at 50% 14%, #fffef4, #ffe7a2 70%, #edbc67);
  border-color: #fff9df;
}
.cutin-win .cutin-eyebrow { color: #925b14; }
.cutin-loss .cutin-stage {
  color: #244d66;
  background: radial-gradient(circle at 50% 10%, #f9fcff, #d5ecf8 72%, #a8d4ed);
  border-color: #f7fcff;
}
.cutin-loss .cutin-eyebrow { color: #416f88; }
.cutin-result-title {
  margin: 0;
  color: inherit;
  font-size: clamp(34px, 6vw, 64px);
  line-height: 1.2;
  font-weight: 900;
  text-shadow: 0 2px 0 #fff9;
}
.cutin-team {
  display: flex;
  justify-content: center;
  gap: clamp(7px, 1.5vw, 16px);
  width: 100%;
  margin: 8px 0;
}
.cutin-team-art {
  display: block;
  flex: 0 1 clamp(68px, 13vw, 112px);
  min-width: 0;
  width: clamp(68px, 13vw, 112px);
  aspect-ratio: 1;
  object-fit: cover;
  border: 5px solid #fffefa;
  border-radius: 13px;
  box-shadow: 0 3px 0 #9e9f8d, 0 8px 14px #334d5366;
}
.cutin-team-art:first-child { transform: rotate(-6deg); }
.cutin-team-art:last-child { transform: rotate(6deg); }
.cutin-result-message {
  margin: 0;
  color: inherit;
  font-size: clamp(15px, 2vw, 20px);
  font-weight: 800;
  line-height: 1.4;
}
.cutin-result-reason {
  margin: 2px 0 0;
  color: inherit;
  font-size: clamp(14px, 1.8vw, 18px);
  font-weight: 800;
  line-height: 1.4;
}
.cutin-next {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: min(280px, 100%);
  min-height: 55px;
  margin-top: 10px;
  padding: 11px 18px;
  border: 2px solid #fffdf1;
  border-radius: 13px;
  background: #f9ca65;
  color: #3d351e;
  box-shadow: 0 4px 0 #ad8240, 0 8px 16px #3b5a5133;
  font-size: clamp(17px, 2.1vw, 21px);
  font-weight: 900;
  cursor: pointer;
}
.cutin-next:hover { background: #ffdc8c; }
.cutin-next:focus-visible { outline: 3px solid #237783; outline-offset: 4px; }
.cutin-next:active { transform: translateY(2px); box-shadow: 0 2px 0 #ad8240; }
.cutin-loss .cutin-next { background: #b5e7f6; color: #244d66; box-shadow: 0 4px 0 #6aadc4; }
.cutin-loss .cutin-next:hover { background: #d2f3fb; }

.cutin-rps .cutin-stage {
  width: min(680px, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 11px;
  padding: clamp(18px, 3vw, 32px);
  text-align: center;
  color: #244c54;
  background: linear-gradient(145deg, #fffef0, #def4ee);
}
.cutin-rps-win .cutin-stage { background: linear-gradient(145deg, #fffbed, #ffe29d); }
.cutin-rps-loss .cutin-stage { background: linear-gradient(145deg, #f8fcff, #cce8f7); }
.cutin-rps-tie .cutin-stage { background: linear-gradient(145deg, #faffee, #d7efcf); }
.cutin-rps-origin {
  display: flex;
  align-items: center;
  align-self: flex-start;
  gap: 10px;
  color: #2d6670;
  font-size: clamp(13px, 1.7vw, 16px);
  font-weight: 900;
  text-align: left;
}
.cutin-rps-art {
  display: block;
  flex: none;
  width: 48px;
  height: 48px;
  object-fit: cover;
  border: 3px solid #fff;
  border-radius: 10px;
  box-shadow: 0 2px 7px #2d666947;
}
.cutin-rps-title {
  margin: 0;
  color: #8b521b;
  font-size: clamp(30px, 5vw, 48px);
  font-weight: 900;
  line-height: 1.2;
}
.cutin-rps-loss .cutin-rps-title { color: #336786; }
.cutin-rps-tie .cutin-rps-title { color: #467c42; }
.cutin-rps-hands {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(7px, 2vw, 18px);
  width: 100%;
}
.cutin-rps-hand {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-width: 0;
  min-height: 150px;
  padding: 8px;
  border: 3px solid;
  border-radius: 17px;
  background: #ffffffb8;
  box-shadow: 0 5px 0 #47706c30;
}
.cutin-rps-hand.human { border-color: #57b7a6; }
.cutin-rps-hand.cpu { border-color: #e6a3ae; }
.cutin-rps-side { font-size: clamp(14px, 2vw, 18px); font-weight: 900; }
.cutin-rps-hand.human .cutin-rps-side { color: #248074; }
.cutin-rps-hand.cpu .cutin-rps-side { color: #a95769; }
.cutin-rps-symbol { font-size: clamp(52px, 8vw, 76px); line-height: 1.1; }
.cutin-rps-name { font-size: clamp(17px, 2.6vw, 22px); }
.cutin-rps-versus { color: #678388; font: 900 clamp(14px, 2vw, 22px)/1 system-ui; }
.cutin-rps-effect {
  width: 100%;
  margin: 4px 0 0;
  padding: 10px 14px;
  border: 2px solid #ffffffcf;
  border-radius: 12px;
  background: #ffffffad;
  color: #28545a;
  font-size: clamp(15px, 2vw, 18px);
  font-weight: 900;
  line-height: 1.45;
}
.cutin-rps-effect::before {
  content: "つぎの こうか";
  display: block;
  margin-bottom: 3px;
  color: #54797d;
  font-size: 12px;
}

@keyframes cutin-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes cutin-stage-in {
  from { opacity: 0; transform: translate(var(--cutin-entry-x), 14px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@media (max-width: 480px) {
  .cutin-overlay { padding: 10px; }
  .cutin-stage { border-width: 3px; border-radius: 17px; }
  .cutin-skill .cutin-stage {
    grid-template-columns: 91px minmax(0, 1fr);
    gap: 10px;
    min-height: 184px;
    padding: 12px;
  }
  .cutin-art-frame { border-width: 4px; border-radius: 10px; }
  .cutin-title { font-size: 19px; margin: 3px 0 5px; }
  .cutin-callout { font-size: 14px; padding: 4px 8px; }
  .cutin-effect { font-size: 12px; line-height: 1.35; margin-top: 7px; }
  .cutin-result .cutin-stage { padding: 20px 14px; }
  .cutin-team-art { border-width: 3px; }
  .cutin-skip { top: 8px; right: 8px; min-width: 78px; min-height: 42px; font-size: 13px; }
  .cutin-next { min-height: 49px; margin-top: 5px; font-size: 17px; }
  .cutin-rps .cutin-stage { gap: 8px; padding: 14px; }
  .cutin-rps-art { width: 38px; height: 38px; }
  .cutin-rps-title { font-size: 28px; }
  .cutin-rps-hand { min-height: 112px; padding: 6px; border-radius: 12px; }
  .cutin-rps-symbol { font-size: 45px; }
  .cutin-rps-name { font-size: 17px; }
  .cutin-rps-versus { font-size: 14px; }
  .cutin-rps-effect { padding: 8px; font-size: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .cutin-overlay, .cutin-stage, .cutin-overlay.is-leaving { animation: none !important; transition: none !important; }
}
