/* ============================================================
   TENSHOKU V8.02 — CIRCULATION EDUCATION
   Heavy visual energy, lightweight runtime.
   Continuous motion is transform/opacity only.
   ============================================================ */
.tp-circ-section{
  position:relative;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(circle at 74% 28%,rgba(205,18,29,.16),transparent 28rem),
    radial-gradient(circle at 14% 74%,rgba(117,4,12,.14),transparent 24rem),
    linear-gradient(135deg,#070708 0%,#0a0607 48%,#070708 100%);
  --circ-progress:0%;
}
.tp-circ-section::before{
  content:"";
  position:absolute;
  z-index:-1;
  width:520px;height:520px;
  right:-180px;top:-210px;
  border:1px solid rgba(229,27,35,.16);
  border-radius:50%;
  box-shadow:0 0 0 70px rgba(229,27,35,.025),0 0 0 140px rgba(229,27,35,.012);
  opacity:.45;
  transform:scale(.88);
}
.tp-circ-section::after{
  content:"";
  position:absolute;
  z-index:-1;
  inset:0;
  pointer-events:none;
  opacity:.22;
  background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);
  background-size:48px 48px;
  mask-image:linear-gradient(to bottom,transparent,black 18%,black 82%,transparent);
}
.tp-circ-grid{
  display:grid;
  grid-template-columns:.88fr 1.12fr;
  gap:52px;
  align-items:center;
}
.tp-circ-copy{position:relative;z-index:2}
.tp-circ-eyebrow{
  display:flex;align-items:center;gap:11px;flex-wrap:wrap;
  margin-bottom:18px;
  font-size:10px;font-weight:950;letter-spacing:.18em;text-transform:uppercase;
}
.tp-circ-eyebrow span{color:#ff4148}
.tp-circ-eyebrow i{display:block;width:24px;height:1px;background:#5a2023}
.tp-circ-eyebrow small{color:#6f7279;font-size:9px;letter-spacing:.16em}
.tp-circ-copy h2{
  max-width:620px;
  font-size:clamp(39px,5vw,66px);
  line-height:.92;
  letter-spacing:-.052em;
}
.tp-circ-lead{
  max-width:610px;
  margin-top:22px;
  color:#b0b3b9;
  font-size:15px;
  line-height:1.8;
}
.tp-circ-signal{
  display:flex;align-items:center;gap:12px;
  width:min(100%,540px);
  margin-top:25px;padding:13px 15px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:14px;
  background:rgba(255,255,255,.022);
}
.tp-circ-signal-dot{
  position:relative;flex:0 0 10px;width:10px;height:10px;border-radius:50%;background:#ff343b;
  box-shadow:0 0 0 5px rgba(229,27,35,.09);
}
.tp-circ-signal-dot::after{
  content:"";position:absolute;inset:-8px;border:1px solid rgba(255,55,62,.22);border-radius:50%;opacity:0;
}
.tp-circ-signal b{display:block;color:#f4f4f2;font-size:9px;letter-spacing:.11em}
.tp-circ-signal small{display:block;margin-top:3px;color:#777b82;font-size:9px;line-height:1.4}

.tp-circ-media{min-width:0}
.tp-circ-video-shell{
  position:relative;
  aspect-ratio:1/1;
  overflow:hidden;
  border:1px solid rgba(229,27,35,.50);
  border-radius:25px;
  background:#100406;
  box-shadow:0 34px 80px rgba(0,0,0,.42),0 0 55px rgba(151,8,17,.09);
  transform:translateZ(0);
}
.tp-circ-video{
  width:100%;height:100%;display:block;object-fit:cover;
  transform:scale(1.012);
  filter:saturate(1.04) contrast(1.02);
}
.tp-circ-video-shell::before{
  content:"";position:absolute;z-index:2;inset:0;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(0,0,0,.34),transparent 25%,transparent 62%,rgba(0,0,0,.62)),
    radial-gradient(circle at center,transparent 55%,rgba(0,0,0,.22));
}
.tp-circ-video-shell::after{
  content:"";position:absolute;z-index:5;inset:0;pointer-events:none;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035),inset 0 -80px 100px rgba(0,0,0,.22);
}
.tp-circ-media-tag{
  position:absolute;z-index:6;top:18px;right:18px;
  max-width:190px;text-align:right;
  color:#c7c9ce;font-size:8px;font-weight:850;line-height:1.5;letter-spacing:.18em;
}
.tp-circ-scan{
  position:absolute;z-index:4;top:-8%;bottom:-8%;left:-18%;
  width:11%;
  opacity:0;
  pointer-events:none;
  transform:skewX(-12deg) translate3d(0,0,0);
  background:linear-gradient(90deg,transparent,rgba(255,49,56,.06),rgba(255,255,255,.11),rgba(255,49,56,.06),transparent);
}
.tp-circ-phase{
  position:absolute;z-index:7;bottom:38px;
  display:flex;align-items:center;gap:8px;
  min-width:150px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:11px;
  background:rgba(5,5,6,.74);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  opacity:.38;
  transform:translate3d(0,6px,0) scale(.98);
  transition:opacity .28s ease,transform .34s cubic-bezier(.16,.8,.2,1),border-color .28s ease,background-color .28s ease;
}
.tp-circ-phase>span{
  width:7px;height:7px;border-radius:50%;background:#6e7177;flex:0 0 auto;
  transition:background-color .25s ease,box-shadow .25s ease;
}
.tp-circ-phase b{display:block;font-size:9px;letter-spacing:.07em}
.tp-circ-phase small{display:block;margin-top:2px;color:#858990;font-size:8px}
.tp-circ-phase-left{left:18px}
.tp-circ-phase-mid{left:50%;transform:translate3d(-50%,6px,0) scale(.98)}
.tp-circ-phase-right{right:18px}
.tp-circ-section[data-phase="restricted"] .tp-circ-phase-left,
.tp-circ-section[data-phase="transition"] .tp-circ-phase-mid,
.tp-circ-section[data-phase="open"] .tp-circ-phase-right{
  opacity:1;
  border-color:rgba(255,55,62,.52);
  background:rgba(45,6,9,.82);
}
.tp-circ-section[data-phase="restricted"] .tp-circ-phase-left{transform:translate3d(0,0,0) scale(1)}
.tp-circ-section[data-phase="transition"] .tp-circ-phase-mid{transform:translate3d(-50%,0,0) scale(1)}
.tp-circ-section[data-phase="open"] .tp-circ-phase-right{transform:translate3d(0,0,0) scale(1)}
.tp-circ-section[data-phase="restricted"] .tp-circ-phase-left>span,
.tp-circ-section[data-phase="transition"] .tp-circ-phase-mid>span,
.tp-circ-section[data-phase="open"] .tp-circ-phase-right>span{
  background:#ff3b42;
  box-shadow:0 0 0 5px rgba(229,27,35,.11);
}
.tp-circ-progress{
  position:absolute;z-index:8;left:18px;right:18px;bottom:17px;height:2px;
  overflow:hidden;border-radius:99px;background:rgba(255,255,255,.10);
}
.tp-circ-progress i{
  display:block;width:var(--circ-progress);height:100%;
  background:linear-gradient(90deg,#7b0b11,#ff3c43,#fff4f4);
  box-shadow:0 0 12px rgba(255,50,58,.55);
}
.tp-circ-disclaimer{
  max-width:690px;margin:11px auto 0;
  text-align:center;color:#6f7278;font-size:9px;line-height:1.55;
}

.tp-circ-facts{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px;
}
.tp-circ-fact{
  position:relative;overflow:hidden;
  display:grid;grid-template-columns:auto 1fr;gap:15px;
  min-height:176px;padding:23px;
  border:1px solid rgba(255,255,255,.08);
  border-radius:18px;
  background:linear-gradient(145deg,rgba(255,255,255,.025),rgba(255,255,255,.012));
}
.tp-circ-fact::after{
  content:"";position:absolute;left:0;top:0;width:0;height:2px;background:#e51b23;
  transition:width .7s cubic-bezier(.16,.8,.2,1);
}
.tp-circ-fact-icon{
  display:grid;place-items:center;
  width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(255,60,67,.48);
  color:#ff4248;font-size:10px;font-weight:950;letter-spacing:.06em;
}
.tp-circ-fact h3{font-size:14px;line-height:1.15;letter-spacing:.025em}
.tp-circ-fact p{margin-top:9px;color:#93969d;font-size:11px;line-height:1.65}

.tp-circ-next{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:25px;
  margin-top:18px;padding:24px 25px;
  border:1px solid rgba(229,27,35,.20);
  border-radius:18px;
  background:linear-gradient(90deg,rgba(229,27,35,.055),rgba(255,255,255,.015));
}
.tp-circ-next small{color:#8b8e94;font-size:8px;letter-spacing:.18em}
.tp-circ-next h3{margin-top:7px;font-size:21px;line-height:1.1}
.tp-circ-cta{min-width:245px}
.tp-circ-cta span{display:inline-block;margin-left:7px;transition:transform .2s ease}

/* ENTER MOTION */
.tp-circ-copy,
.tp-circ-video-shell,
.tp-circ-fact,
.tp-circ-next{
  opacity:0;
  transform:translate3d(0,24px,0);
}
.tp-circ-copy{transform:translate3d(-24px,12px,0)}
.tp-circ-video-shell{transform:translate3d(28px,0,0) scale(.975)}
.tp-circ-section.is-circ-visible .tp-circ-copy{
  opacity:1;transform:none;
  transition:opacity .62s ease,transform .86s cubic-bezier(.16,.8,.2,1);
}
.tp-circ-section.is-circ-visible .tp-circ-video-shell{
  opacity:1;transform:none;
  transition:opacity .72s ease .08s,transform .95s cubic-bezier(.16,.8,.2,1) .08s;
}
.tp-circ-section.is-circ-visible .tp-circ-fact{
  opacity:1;transform:none;
  transition:opacity .55s ease,transform .72s cubic-bezier(.16,.8,.2,1);
}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(1){transition-delay:.14s}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(2){transition-delay:.23s}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(3){transition-delay:.32s}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(1)::after{width:42%}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(2)::after{width:64%}
.tp-circ-section.is-circ-visible .tp-circ-fact:nth-child(3)::after{width:86%}
.tp-circ-section.is-circ-visible .tp-circ-next{
  opacity:1;transform:none;
  transition:opacity .6s ease .36s,transform .8s cubic-bezier(.16,.8,.2,1) .36s;
}
.tp-circ-section.is-circ-visible .tp-circ-signal-dot::after{
  animation:tpCircPulse 1.8s ease-out infinite;
}
.tp-circ-section.is-circ-visible .tp-circ-scan{
  animation:tpCircScan 4.2s cubic-bezier(.2,.65,.2,1) 1.2s infinite;
}
.tp-circ-section.is-circ-visible::before{
  animation:tpCircAura 6.8s ease-in-out infinite alternate;
}
.tp-circ-section.is-circ-visible .tp-circ-video{
  animation:tpCircVideoBreath 8s ease-in-out infinite alternate;
}
@keyframes tpCircPulse{
  0%{transform:scale(.55);opacity:.75}
  100%{transform:scale(1.7);opacity:0}
}
@keyframes tpCircScan{
  0%,18%{transform:skewX(-12deg) translate3d(0,0,0);opacity:0}
  28%{opacity:.8}
  63%{opacity:.18}
  74%,100%{transform:skewX(-12deg) translate3d(1080%,0,0);opacity:0}
}
@keyframes tpCircAura{
  from{transform:scale(.88) translate3d(0,0,0);opacity:.32}
  to{transform:scale(1.08) translate3d(-20px,22px,0);opacity:.62}
}
@keyframes tpCircVideoBreath{
  from{transform:scale(1.012)}
  to{transform:scale(1.035)}
}

@media(hover:hover) and (pointer:fine){
  .tp-circ-fact{transition:border-color .2s ease,background-color .2s ease,transform .22s ease}
  .tp-circ-fact:hover{transform:translateY(-5px);border-color:rgba(229,27,35,.30);background:rgba(229,27,35,.025)}
  .tp-circ-fact:hover .tp-circ-fact-icon{transform:rotate(-7deg) scale(1.06)}
  .tp-circ-fact-icon{transition:transform .22s ease}
  .tp-circ-cta:hover span{transform:translateX(5px)}
}

@media(max-width:980px){
  .tp-circ-grid{grid-template-columns:1fr;gap:30px}
  .tp-circ-copy{text-align:center}
  .tp-circ-copy h2,.tp-circ-lead,.tp-circ-signal{margin-left:auto;margin-right:auto}
  .tp-circ-eyebrow{justify-content:center}
}
@media(max-width:720px){
  .tp-circ-section{padding-top:62px;padding-bottom:62px}
  .tp-circ-copy h2{font-size:clamp(37px,11vw,52px)}
  .tp-circ-lead{font-size:13px;line-height:1.72}
  .tp-circ-media-tag{top:12px;right:12px;font-size:7px}
  .tp-circ-phase{bottom:31px;min-width:0;padding:8px 9px}
  .tp-circ-phase-left{left:10px}
  .tp-circ-phase-right{right:10px}
  .tp-circ-phase-mid{display:none}
  .tp-circ-phase b{font-size:8px}.tp-circ-phase small{font-size:7px}
  .tp-circ-progress{left:10px;right:10px;bottom:12px}
  .tp-circ-disclaimer{padding:0 7px}
  .tp-circ-facts{grid-template-columns:1fr;gap:10px}
  .tp-circ-fact{min-height:0;text-align:left}
  .tp-circ-next{grid-template-columns:1fr;text-align:center}
  .tp-circ-cta{width:100%;min-width:0}
}
@media(max-width:400px){
  .tp-circ-phase small{display:none}
  .tp-circ-phase{padding:8px}
  .tp-circ-signal{align-items:flex-start;text-align:left}
}
@media(prefers-reduced-motion:reduce){
  .tp-circ-section::before,
  .tp-circ-section .tp-circ-scan,
  .tp-circ-section .tp-circ-video,
  .tp-circ-section .tp-circ-signal-dot::after{animation:none!important}
  .tp-circ-copy,.tp-circ-video-shell,.tp-circ-fact,.tp-circ-next{opacity:1!important;transform:none!important;transition:none!important}
}
