/*
 * EP_CUBE_SLIDE_MENU_TOP_LAYER_V1
 *
 * Mobile slide menu must stay above page-specific fixed UI.
 *
 * Original positive z-index declarations were shifted by:
 *   +121000
 *
 * camview max z-index at patch time:
 *   120000
 *
 * Existing relative stacking order inside the menu is preserved.
 */

:root{
  --epcube-menu-accent:var(--m-green,var(--green,#25f08b));
  --epcube-menu-header-top:#24475f;
  --epcube-menu-header-mid:#21445c;
  --epcube-menu-header-bottom:#19384f;
  --epcube-menu-mobile-top:#1f1f1f;
  --epcube-menu-mobile-bottom:#1f1f1f;
  --epcube-menu-text:#f5fffb;
  --epcube-menu-muted:rgba(232,255,245,.62);
  --epcube-menu-item-font-size-pc:18pt;
  --epcube-menu-item-font-size-mobile:14pt;
  --epcube-menu-item-height-pc:72px;
  --epcube-menu-item-height-mobile:62px;
  --epcube-menu-top:78px;
  /* Drawer width: overridden by epcube-menu.json via JavaScript */
  --epcube-menu-width-pc:min(520px,88%);
  --epcube-menu-width-mobile:min(88vw,430px);

  /* EP CUBE background image tuning: desktop */
  --epcube-cabinet-width-pc:min(64%,310px);
  --epcube-cabinet-right-pc:50px;
  --epcube-cabinet-bottom-pc:10%;
  --epcube-cabinet-opacity-pc:.20;

  /* EP CUBE background image tuning: mobile */
  --epcube-cabinet-width-mobile:min(70%,260px);
  --epcube-cabinet-right-mobile:50px;
  --epcube-cabinet-bottom-mobile:10%;
  --epcube-cabinet-opacity-mobile:.22;
}

body.epcube-menu-ready .epcube-menu-trigger{
  position:relative;
  flex:0 0 auto;
  width:50px;
  height:50px;
  margin:0 20px 0 0;
  padding:0;
  border:1px solid rgba(37,240,139,.34);
  border-radius:14px;
  background:rgba(0,0,0,.16);
  color:var(--epcube-menu-accent);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  overflow:visible;
  isolation:isolate;
  -webkit-tap-highlight-color:transparent;
  animation:epcubeMenuFirefly 3.4s ease-in-out infinite;
  transition:transform .22s ease,border-color .22s ease,background .22s ease,box-shadow .22s ease,filter .22s ease;
}

body.epcube-menu-ready .epcube-menu-trigger::before{
  content:"";
  position:absolute;
  inset:-5px;
  z-index:-1;
  border-radius:18px;
  background:radial-gradient(circle,rgba(143,240,178,.28) 0,rgba(37,240,139,.11) 38%,transparent 72%);
  opacity:.42;
  transform:scale(.88);
  filter:blur(3px);
  animation:epcubeMenuFireflyHalo 3.4s ease-in-out infinite;
  pointer-events:none;
}

body.epcube-menu-ready .epcube-menu-trigger:hover,
body.epcube-menu-ready .epcube-menu-trigger:focus-visible{
  outline:none;
  transform:scale(1.05);
  border-color:#a8ffcb;
  background:rgba(37,240,139,.12);
  color:#e4ffee;
  filter:brightness(1.12) saturate(1.08);
  animation-duration:1.2s;
}

body.epcube-menu-ready .epcube-menu-trigger:hover::before,
body.epcube-menu-ready .epcube-menu-trigger:focus-visible::before{
  opacity:.78;
  filter:blur(5px);
  transform:scale(1.05);
  animation-duration:1.2s;
}

body.epcube-menu-ready .epcube-menu-trigger:hover .epcube-menu-icon > span,
body.epcube-menu-ready .epcube-menu-trigger:focus-visible .epcube-menu-icon > span{
  box-shadow:0 0 7px #e1ffeb,0 0 18px rgba(37,240,139,.95),0 0 34px rgba(37,240,139,.58);
}

body.epcube-menu-open .epcube-menu-trigger{
  border-color:rgba(143,240,178,.70);
  background:rgba(37,240,139,.10);
  color:#dfffe9;
  animation-duration:3.4s;
}

body.epcube-menu-open .epcube-menu-trigger::before{
  opacity:.52;
  transform:scale(.96);
  filter:blur(4px);
  animation-duration:3.4s;
}

@keyframes epcubeMenuFirefly{
  0%,100%{
    opacity:.56;
    filter:brightness(.72) saturate(.88);
    box-shadow:0 0 4px rgba(37,240,139,.12),0 0 10px rgba(37,240,139,.08);
  }
  42%{
    opacity:.82;
    filter:brightness(1.02) saturate(1);
    box-shadow:0 0 8px rgba(37,240,139,.34),0 0 18px rgba(37,240,139,.19);
  }
  58%{
    opacity:1;
    filter:brightness(1.48) saturate(1.18);
    box-shadow:0 0 13px rgba(143,240,178,.82),0 0 31px rgba(37,240,139,.48),0 0 52px rgba(37,240,139,.19);
  }
  72%{
    opacity:.76;
    filter:brightness(.94) saturate(.95);
    box-shadow:0 0 7px rgba(37,240,139,.27),0 0 16px rgba(37,240,139,.14);
  }
}

@keyframes epcubeMenuFireflyHalo{
  0%,100%{opacity:.12;transform:scale(.78)}
  45%{opacity:.30;transform:scale(.95)}
  58%{opacity:.88;transform:scale(1.14)}
  72%{opacity:.22;transform:scale(.90)}
}

.epcube-menu-icon{
  position:relative;
  width:29px;
  height:24px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  pointer-events:none;
}

.epcube-menu-icon > span{
  display:block;
  width:100%;
  height:4px;
  border-radius:999px;
  background:currentColor;
  transform-origin:center;
  transition:transform .34s cubic-bezier(.2,.85,.2,1),opacity .18s ease,width .28s ease;
  box-shadow:0 0 8px currentColor;
}

body.epcube-menu-open .epcube-menu-icon > span:nth-child(1){transform:translateY(10px) rotate(45deg)}
body.epcube-menu-open .epcube-menu-icon > span:nth-child(2){opacity:0;width:0}
body.epcube-menu-open .epcube-menu-icon > span:nth-child(3){transform:translateY(-10px) rotate(-45deg)}

.epcube-menu-backdrop{
  position:fixed;
  inset:0;
  z-index:127000;
  border:0;
  padding:0;
  background:rgba(0,0,0,.62);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .34s ease,visibility .34s step-end;
}

.epcube-slide-menu{
  position:fixed;
  z-index:127100;
  left:0;
  top:var(--epcube-menu-top);
  bottom:0;
  width:var(--epcube-menu-width-pc,min(520px,88%));
  display:flex;
  flex-direction:column;
  color:var(--epcube-menu-text);
  background:linear-gradient(180deg,var(--epcube-menu-header-top) 0%,var(--epcube-menu-header-mid) 42%,var(--epcube-menu-header-bottom) 100%);
  border-right:1px solid rgba(143,240,178,.24);
  box-shadow:24px 0 70px rgba(0,0,0,.60),inset -1px 0 0 rgba(255,255,255,.05);
  transform:translateX(calc(-100% - 28px));
  visibility:hidden;
  pointer-events:none;
  transition:transform .42s cubic-bezier(.18,.86,.24,1),visibility .42s step-end;
  overflow:hidden;
  isolation:isolate;
}

.epcube-slide-menu::before{
  content:"";
  position:absolute;
  z-index:-1;
  right:var(--epcube-cabinet-right-pc,-8px);
  bottom:var(--epcube-cabinet-bottom-pc,4%);
  width:var(--epcube-cabinet-width-pc,min(64%,310px));
  aspect-ratio:435 / 406;
  background:url('./img/epcube-cabinet-3units.png') no-repeat center center / contain;
  opacity:var(--epcube-cabinet-opacity-pc,.30);
  filter:
    drop-shadow(0 20px 26px rgba(0,0,0,.30))
    drop-shadow(0 0 18px rgba(255,255,255,.07))
    drop-shadow(0 0 26px rgba(37,240,139,.06));
  pointer-events:none;
}

.epcube-slide-menu::after{
  content:"";
  position:absolute;
  z-index:-2;
  inset:0;
  background:
    linear-gradient(90deg,rgba(25,56,79,.97) 0%,rgba(31,64,87,.88) 48%,rgba(31,64,87,.44) 74%,rgba(25,56,79,.24) 100%),
    radial-gradient(360px 300px at 84% 82%,rgba(255,255,255,.07),transparent 72%),
    radial-gradient(300px 260px at 82% 82%,rgba(37,240,139,.08),transparent 80%);
  pointer-events:none;
}

body.epcube-menu-open .epcube-menu-backdrop{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:opacity .34s ease,visibility 0s;
}

body.epcube-menu-open .epcube-slide-menu{
  transform:translateX(0);
  visibility:visible;
  pointer-events:auto;
  transition:transform .42s cubic-bezier(.18,.86,.24,1),visibility 0s;
}

body.epcube-menu-open .dashboard .topbar{z-index:127200!important}

.epcube-menu-scroll{
  position:relative;
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  padding:22px 18px 34px;
  scrollbar-width:thin;
  scrollbar-color:var(--epcube-menu-accent) rgba(255,255,255,.08);
}

.epcube-menu-scroll::-webkit-scrollbar{width:10px}
.epcube-menu-scroll::-webkit-scrollbar-track{background:rgba(255,255,255,.06);border-radius:10px}
.epcube-menu-scroll::-webkit-scrollbar-thumb{background:var(--epcube-menu-accent);border-radius:10px;box-shadow:0 0 12px rgba(37,240,139,.45)}

.epcube-menu-list{list-style:none;margin:0;padding:0}
.epcube-menu-entry + .epcube-menu-entry{margin-top:0}

.epcube-menu-link{
  position:relative;
  height:var(--epcube-menu-item-height-pc,72px);
  min-height:var(--epcube-menu-item-height-pc,72px);
  width:100%;
  display:grid;
  grid-template-columns:40px minmax(0,1fr) 20px;
  align-items:center;
  gap:12px;
  padding:0 14px 0 12px;
  border:0;
  border-radius:0;
  color:var(--epcube-menu-text);
  text-decoration:none;
  font-size:var(--epcube-menu-item-font-size-pc,18pt);
  line-height:1.15;
  font-weight:760;
  letter-spacing:.01em;
  background:transparent;
  overflow:hidden;
  transition:transform .22s ease,color .22s ease,background .22s ease,text-shadow .22s ease;
  -webkit-tap-highlight-color:transparent;
}

.epcube-menu-link::before{
  content:"";
  position:absolute;
  inset:8px 0;
  background:linear-gradient(90deg,rgba(37,240,139,.16),rgba(37,240,139,.05) 54%,transparent 100%);
  opacity:0;
  transform:translateX(-22px);
  transition:opacity .24s ease,transform .28s ease;
  pointer-events:none;
}

.epcube-menu-link::after{
  content:"›";
  grid-column:3;
  color:var(--epcube-menu-accent);
  font-size:30px;
  line-height:1;
  opacity:.35;
  transition:transform .22s ease,opacity .22s ease;
}

.epcube-menu-link:hover,
.epcube-menu-link:focus-visible{
  outline:none;
  color:#fff;
  transform:translateX(4px);
  background:transparent;
  text-shadow:0 0 12px rgba(143,240,178,.22);
}
.epcube-menu-link:hover::before,
.epcube-menu-link:focus-visible::before{opacity:1;transform:translateX(0)}
.epcube-menu-link:hover::after,
.epcube-menu-link:focus-visible::after{transform:translateX(4px);opacity:.96}

.epcube-menu-item-label{transition:color .18s ease,text-shadow .18s ease,filter .18s ease}
.epcube-menu-link:hover .epcube-menu-item-label,
.epcube-menu-link:focus-visible .epcube-menu-item-label{
  color:var(--epcube-menu-accent);
  text-shadow:0 0 7px rgba(143,240,178,.90),0 0 16px rgba(37,240,139,.62),0 0 28px rgba(37,240,139,.32);
  filter:brightness(1.22);
}

.epcube-menu-link.is-current{
  color:var(--epcube-menu-accent);
  background:linear-gradient(90deg,rgba(37,240,139,.11),rgba(37,240,139,.02) 68%,transparent);
  box-shadow:inset 3px 0 0 var(--epcube-menu-accent);
  text-shadow:0 0 12px rgba(37,240,139,.22);
}
.epcube-menu-link.is-current::after{content:"●";font-size:10px;opacity:.9}

.epcube-menu-item-icon{
  grid-column:1;
  display:flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:36px;
  color:var(--epcube-menu-accent);
  background:transparent;
  font-size:24px;
  line-height:1;
  font-weight:900;
  text-shadow:0 0 9px rgba(37,240,139,.28);
}

.epcube-menu-item-label{grid-column:2;min-width:0;overflow-wrap:anywhere}

.epcube-menu-divider{
  position:relative;
  margin:20px 4px 10px;
  min-height:24px;
  display:flex;
  align-items:center;
  gap:12px;
  color:var(--epcube-menu-accent);
  font-size:13px;
  line-height:1.2;
  font-weight:850;
  letter-spacing:.11em;
  opacity:.92;
}

.epcube-menu-divider::before,
.epcube-menu-divider::after{
  content:"";
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(143,240,178,.86));
  box-shadow:0 0 7px rgba(37,240,139,.38);
}
.epcube-menu-divider::before{width:18px;flex:0 0 18px}
.epcube-menu-divider::after{flex:1;background:linear-gradient(90deg,rgba(143,240,178,.86),transparent)}

.epcube-menu-loading,
.epcube-menu-error{
  padding:30px 18px;
  color:var(--epcube-menu-muted);
  font-size:18px;
  line-height:1.7;
  text-align:center;
}
.epcube-menu-error{color:#ffb38c}

.epcube-menu-link.is-selected{
  color:#fff;
  background:linear-gradient(90deg,rgba(37,240,139,.24),rgba(37,240,139,.05) 64%,transparent);
  animation:epcubeMenuSelected .52s cubic-bezier(.2,.85,.2,1) both;
  box-shadow:inset 4px 0 0 var(--epcube-menu-accent);
  text-shadow:0 0 16px rgba(143,240,178,.42);
}

@keyframes epcubeMenuSelected{
  0%{transform:scale(1);filter:brightness(1)}
  38%{transform:scale(1.03);filter:brightness(1.38)}
  100%{transform:scale(.99);filter:brightness(1.06)}
}

.epcube-menu-page-flash{
  position:fixed;
  inset:0;
  z-index:127300;
  pointer-events:none;
  opacity:0;
  background:radial-gradient(circle at var(--flash-x,24%) var(--flash-y,50%),rgba(255,255,255,.92) 0,rgba(143,240,178,.42) 9%,rgba(37,240,139,.13) 24%,transparent 48%);
  transform:scale(.72);
}
.epcube-menu-page-flash.is-active{animation:epcubeMenuPageFlash .58s cubic-bezier(.16,.88,.24,1) both}

@keyframes epcubeMenuPageFlash{
  0%{opacity:0;transform:scale(.72);filter:blur(8px)}
  35%{opacity:.95;transform:scale(1.02);filter:blur(2px)}
  100%{opacity:0;transform:scale(1.55);filter:blur(17px)}
}

@media (max-width:760px){
  :root{--epcube-menu-top:74px}

  body.epcube-menu-ready .dashboard .topbar{
    grid-template-columns:48px auto minmax(0,1fr)!important;
    grid-template-rows:1fr 1fr!important;
    column-gap:10px!important;
    padding-left:16px!important;
    padding-right:18px!important;
  }

  body.epcube-menu-ready .dashboard .topbar .epcube-menu-trigger{
    grid-column:1!important;
    grid-row:1 / span 2!important;
    align-self:center!important;
    justify-self:start!important;
    width:44px!important;
    height:44px!important;
    margin:0!important;
    border-radius:13px!important;
  }

  body.epcube-menu-ready .dashboard .topbar .brand{
    grid-column:2!important;
    grid-row:1 / span 2!important;
    align-self:center!important;
    justify-self:start!important;
    font-size:31px!important;
    letter-spacing:.035em!important;
  }

  body.epcube-menu-ready .dashboard .topbar .mode{grid-column:3!important;grid-row:1!important}
  body.epcube-menu-ready .dashboard .topbar .datetime{grid-column:3!important;grid-row:2!important}

  .epcube-menu-icon{width:25px;height:21px}
  .epcube-menu-icon > span{height:3px}
  body.epcube-menu-open .epcube-menu-icon > span:nth-child(1){transform:translateY(9px) rotate(45deg)}
  body.epcube-menu-open .epcube-menu-icon > span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}

  .epcube-slide-menu{
    width:var(--epcube-menu-width-mobile,min(88vw,430px));
    background:linear-gradient(180deg,var(--epcube-menu-mobile-top) 0%,var(--epcube-menu-mobile-bottom) 100%);
  }
  .epcube-slide-menu::before{
    right:var(--epcube-cabinet-right-mobile,-20px);
    bottom:var(--epcube-cabinet-bottom-mobile,3%);
    width:var(--epcube-cabinet-width-mobile,min(70%,260px));
    aspect-ratio:435 / 406;
    opacity:var(--epcube-cabinet-opacity-mobile,.22);
    filter:
      drop-shadow(0 14px 20px rgba(0,0,0,.30))
      drop-shadow(0 0 12px rgba(255,255,255,.045))
      drop-shadow(0 0 20px rgba(37,240,139,.045));
  }
  .epcube-slide-menu::after{
    background:
      linear-gradient(90deg,rgba(31,31,31,.98) 0%,rgba(31,31,31,.91) 52%,rgba(31,31,31,.48) 78%,rgba(31,31,31,.28) 100%),
      radial-gradient(260px 230px at 84% 84%,rgba(255,255,255,.045),transparent 74%),
      radial-gradient(220px 200px at 82% 84%,rgba(37,240,139,.055),transparent 82%);
  }
  .epcube-menu-scroll{padding:12px 9px 24px}
  .epcube-menu-link{
    height:var(--epcube-menu-item-height-mobile,62px);
    min-height:var(--epcube-menu-item-height-mobile,62px);
    grid-template-columns:34px minmax(0,1fr) 18px;
    gap:8px;
    padding:0 10px;
    font-size:var(--epcube-menu-item-font-size-mobile,14pt);
  }
  .epcube-menu-item-icon{width:30px;height:30px;font-size:20px}
  .epcube-menu-link::after{font-size:24px}
  .epcube-menu-divider{font-size:11px;margin:16px 2px 8px}
}

@media (prefers-reduced-motion:reduce){
  body.epcube-menu-ready .epcube-menu-trigger,
  body.epcube-menu-ready .epcube-menu-trigger::before,
  .epcube-menu-icon > span,
  .epcube-menu-backdrop,
  .epcube-slide-menu,
  .epcube-menu-link{animation:none!important;transition:none!important}
  .epcube-menu-link.is-selected,
  .epcube-menu-page-flash.is-active{animation:none!important}
}

/* =========================================================
   Social links footer
   - Configured by epcube-menu.json > socialLinks
   - Fixed at the bottom of the drawer; menu items remain scrollable
   ========================================================= */
.epcube-menu-social{
  position:relative;
  z-index:121003;
  flex:0 0 auto;
  min-height:78px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:12px 22px calc(12px + env(safe-area-inset-bottom));
  border-top:1px solid rgba(143,240,178,.24);
  background:linear-gradient(180deg,rgba(25,56,79,.88),rgba(20,47,67,.97));
  box-shadow:0 -12px 26px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.035);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}

.epcube-menu-social[hidden]{display:none!important}

.epcube-menu-social-label{
  flex:0 0 auto;
  color:rgba(143,240,178,.78);
  font-size:18px;
  line-height:1;
  font-weight:850;
  letter-spacing:.18em;
  text-transform:uppercase;
  text-shadow:0 0 10px rgba(37,240,139,.28);
}

.epcube-menu-social-links{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
  min-width:0;
}

.epcube-menu-social-link{
  position:relative;
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border:1px solid rgba(143,240,178,.18);
  border-radius:50%;
  color:rgba(245,255,251,.86);
  background:rgba(3,17,22,.20);
  text-decoration:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
  transition:transform .22s ease,color .22s ease,border-color .22s ease,background .22s ease,box-shadow .22s ease,filter .22s ease;
  -webkit-tap-highlight-color:transparent;
}

.epcube-menu-social-link::before{
  content:"";
  position:absolute;
  inset:-5px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(143,240,178,.24),rgba(37,240,139,.08) 44%,transparent 72%);
  opacity:0;
  transform:scale(.78);
  filter:blur(3px);
  transition:opacity .22s ease,transform .22s ease;
  pointer-events:none;
}

.epcube-menu-social-link svg{
  position:relative;
  z-index:121001;
  width:24px;
  height:24px;
  display:block;
}

.epcube-menu-note-mark{
  position:relative;
  z-index:121001;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:14px;
  line-height:1;
  font-weight:850;
  letter-spacing:-.055em;
}

.epcube-menu-social-link:hover,
.epcube-menu-social-link:focus-visible{
  outline:none;
  color:#e7fff0;
  border-color:rgba(168,255,203,.78);
  background:rgba(37,240,139,.13);
  transform:translateY(-3px) scale(1.08);
  filter:brightness(1.2);
  box-shadow:
    0 0 12px rgba(225,255,235,.66),
    0 0 28px rgba(37,240,139,.44),
    inset 0 0 14px rgba(143,240,178,.13);
}

.epcube-menu-social-link:hover::before,
.epcube-menu-social-link:focus-visible::before{
  opacity:1;
  transform:scale(1.12);
}

.epcube-menu-social-link.is-clicked{
  animation:epcubeSocialClick .46s cubic-bezier(.16,.88,.24,1) both;
}

@keyframes epcubeSocialClick{
  0%{transform:scale(1);filter:brightness(1)}
  42%{transform:scale(1.24);filter:brightness(1.7)}
  100%{transform:scale(1);filter:brightness(1)}
}

@media (max-width:760px){
  .epcube-menu-social{
    min-height:68px;
    padding:9px 14px calc(9px + env(safe-area-inset-bottom));
    background:rgba(31,31,31,.96);
  }
  .epcube-menu-social-label{font-size:10px;letter-spacing:.15em}
  .epcube-menu-social-links{gap:9px}
  .epcube-menu-social-link{width:40px;height:40px}
  .epcube-menu-social-link svg{width:21px;height:21px}
  .epcube-menu-note-mark{font-size:12px}
}

@media (prefers-reduced-motion:reduce){
  .epcube-menu-social-link,
  .epcube-menu-social-link::before{transition:none!important}
  .epcube-menu-social-link.is-clicked{animation:none!important}
}


/* =========================================================
   EP CUBE Slide Menu v8.3
   JSON-controlled NEW badge

   epcube-menu.json:
     "new": true  -> 表示
     "new": false -> 非表示
   ========================================================= */

.epcube-menu-item-label{
  position:relative;
}

/*
 * Textの右上に浮かぶ小型NEW badge
 */
.epcube-menu-new-badge{
  position:relative;

  display:inline-flex;

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

  min-width:34px;
  height:17px;

  margin-left:8px;

  padding:0 6px;

  border:
    1px solid
    rgba(225,255,235,.95);

  border-radius:999px;

  vertical-align:top;

  transform:
    translateY(-8px);

  overflow:hidden;

  isolation:isolate;

  color:#05271c;

  background:
    linear-gradient(
      135deg,
      #ffffff 0%,
      #cffff0 22%,
      #8ff0b2 48%,
      #25f08b 72%,
      #ddfff0 100%
    );

  font-family:
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;

  font-size:9px;

  font-weight:950;

  line-height:1;

  letter-spacing:.08em;

  text-indent:.08em;

  text-shadow:
    0 1px 0
    rgba(255,255,255,.45);

  box-shadow:
    0 0 4px
      rgba(255,255,255,.98),

    0 0 9px
      rgba(143,240,178,.95),

    0 0 18px
      rgba(37,240,139,.78),

    0 0 30px
      rgba(37,240,139,.36),

    inset 0 1px 0
      rgba(255,255,255,.95);

  filter:
    brightness(1.12)
    saturate(1.08);

  animation:
    epcubeMenuNewGlow
      1.65s
      ease-in-out
      infinite,

    epcubeMenuNewFloat
      2.7s
      ease-in-out
      infinite;

  pointer-events:none;
}


/*
 * 外側の発光オーラ
 */
.epcube-menu-new-badge::before{
  content:"";

  position:absolute;

  z-index:-1;

  inset:-7px;

  border-radius:999px;

  background:
    radial-gradient(
      ellipse at center,
      rgba(225,255,235,.75) 0%,
      rgba(37,240,139,.42) 38%,
      transparent 72%
    );

  filter:
    blur(5px);

  opacity:.72;

  animation:
    epcubeMenuNewHalo
      1.65s
      ease-in-out
      infinite;
}


/*
 * 白い光が周期的に横切る
 */
.epcube-menu-new-badge::after{
  content:"";

  position:absolute;

  z-index:121002;

  top:-35%;
  bottom:-35%;

  left:-65%;

  width:42%;

  transform:
    skewX(-22deg);

  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(255,255,255,.22),
      rgba(255,255,255,1),
      rgba(255,255,255,.22),
      transparent
    );

  filter:
    blur(.3px);

  animation:
    epcubeMenuNewShine
      2.45s
      cubic-bezier(.2,.75,.25,1)
      infinite;

  pointer-events:none;
}


/*
 * NEW付き項目は、NEW自体だけでなく
 * labelにもごく弱い残光を加える。
 */
.epcube-menu-link.has-new
.epcube-menu-item-label{
  text-shadow:
    0 0 6px
      rgba(143,240,178,.18);
}


/*
 * Current / hoverでもNEWは埋もれない
 */
.epcube-menu-link.has-new:hover
.epcube-menu-new-badge,
.epcube-menu-link.has-new:focus-visible
.epcube-menu-new-badge,
.epcube-menu-link.has-new.is-current
.epcube-menu-new-badge{
  filter:
    brightness(1.30)
    saturate(1.12);

  box-shadow:
    0 0 5px
      rgba(255,255,255,1),

    0 0 13px
      rgba(190,255,216,1),

    0 0 25px
      rgba(37,240,139,.95),

    0 0 42px
      rgba(37,240,139,.50),

    inset 0 1px 0
      rgba(255,255,255,1);
}


/* =========================================================
   Animations
   ========================================================= */

@keyframes epcubeMenuNewGlow{

  0%,
  100%{
    filter:
      brightness(1.02)
      saturate(1.02);

    box-shadow:
      0 0 3px
        rgba(255,255,255,.82),

      0 0 7px
        rgba(143,240,178,.66),

      0 0 14px
        rgba(37,240,139,.46),

      0 0 23px
        rgba(37,240,139,.20),

      inset 0 1px 0
        rgba(255,255,255,.88);
  }

  42%{
    filter:
      brightness(1.28)
      saturate(1.12);

    box-shadow:
      0 0 5px
        rgba(255,255,255,1),

      0 0 12px
        rgba(190,255,216,.98),

      0 0 23px
        rgba(37,240,139,.92),

      0 0 38px
        rgba(37,240,139,.43),

      inset 0 1px 0
        rgba(255,255,255,1);
  }

  58%{
    filter:
      brightness(1.48)
      saturate(1.20);

    box-shadow:
      0 0 7px
        rgba(255,255,255,1),

      0 0 17px
        rgba(216,255,231,1),

      0 0 32px
        rgba(37,240,139,1),

      0 0 52px
        rgba(37,240,139,.58),

      inset 0 1px 0
        rgba(255,255,255,1);
  }

  72%{
    filter:
      brightness(1.16)
      saturate(1.08);
  }
}


@keyframes epcubeMenuNewHalo{

  0%,
  100%{
    opacity:.30;

    transform:
      scale(.80);
  }

  48%{
    opacity:.80;

    transform:
      scale(1.13);
  }

  60%{
    opacity:1;

    transform:
      scale(1.27);
  }

  76%{
    opacity:.48;

    transform:
      scale(.92);
  }
}


@keyframes epcubeMenuNewShine{

  0%{
    left:-65%;
    opacity:0;
  }

  20%{
    opacity:0;
  }

  31%{
    opacity:1;
  }

  48%{
    left:128%;
    opacity:.92;
  }

  54%,
  100%{
    left:128%;
    opacity:0;
  }
}


@keyframes epcubeMenuNewFloat{

  0%,
  100%{
    transform:
      translateY(-8px)
      scale(1);
  }

  52%{
    transform:
      translateY(-9px)
      scale(1.055);
  }
}


/* =========================================================
   Mobile
   ========================================================= */

@media(max-width:760px){

  .epcube-menu-new-badge{
    min-width:31px;
    height:15px;

    margin-left:6px;

    padding:0 5px;

    transform:
      translateY(-7px);

    font-size:8px;
  }

  @keyframes epcubeMenuNewFloat{

    0%,
    100%{
      transform:
        translateY(-7px)
        scale(1);
    }

    52%{
      transform:
        translateY(-8px)
        scale(1.05);
    }
  }
}


/*
 * OSでアニメーション軽減設定の場合は、
 * 動かさず「強い静的発光」にする。
 */
@media(prefers-reduced-motion:reduce){

  .epcube-menu-new-badge,
  .epcube-menu-new-badge::before,
  .epcube-menu-new-badge::after{
    animation:none!important;
  }

  .epcube-menu-new-badge{
    filter:
      brightness(1.25)
      saturate(1.1);

    box-shadow:
      0 0 5px
        rgba(255,255,255,1),

      0 0 12px
        rgba(143,240,178,.9),

      0 0 24px
        rgba(37,240,139,.72);
  }
}


/* =========================================================
   EP CUBE Slide Menu v8.3.1 NEW text-only override
   - NEW背景を廃止し、EPCUBEグリーン文字のみへ変更
   - モバイル版での表示位置ズレを修正
   - 既存JS / JSONは変更しない
   ========================================================= */

.epcube-menu-link.has-new .epcube-menu-item-label{
  position:relative;
  display:block;
  min-width:0;
  overflow:visible;
  overflow-wrap:anywhere;
  padding-right:4.3em;
}

/* NEWは文字だけ */
.epcube-menu-link.has-new .epcube-menu-new-badge{
  position:absolute;
  top:0.02em;
  right:0;

  display:block;

  min-width:0;
  width:auto;
  height:auto;

  margin:0;
  padding:0;

  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;

  color:var(--epcube-menu-accent) !important;

  font-size:12px;
  font-weight:950;
  line-height:1;
  letter-spacing:.12em;
  text-indent:0;
  white-space:nowrap;

  vertical-align:baseline;
  transform:none !important;

  text-shadow:
    0 0 5px rgba(225,255,235,.72),
    0 0 10px rgba(143,240,178,.92),
    0 0 20px rgba(37,240,139,.78),
    0 0 34px rgba(37,240,139,.42);

  filter:brightness(1.04) saturate(1.08);

  animation:
    epcubeMenuNewTextGlow 1.55s ease-in-out infinite,
    epcubeMenuNewTextSpark 2.7s ease-in-out infinite;

  pointer-events:none;
  z-index:121002;
}

/* 旧バッジ背景演出を無効化 */
.epcube-menu-link.has-new .epcube-menu-new-badge::before,
.epcube-menu-link.has-new .epcube-menu-new-badge::after{
  content:none !important;
  display:none !important;
}

/* hover/current時は少しだけ強調 */
.epcube-menu-link.has-new:hover .epcube-menu-new-badge,
.epcube-menu-link.has-new:focus-visible .epcube-menu-new-badge,
.epcube-menu-link.has-new.is-current .epcube-menu-new-badge{
  color:#baffd9 !important;
  text-shadow:
    0 0 6px rgba(255,255,255,.80),
    0 0 12px rgba(143,240,178,1),
    0 0 25px rgba(37,240,139,.95),
    0 0 40px rgba(37,240,139,.52);
  filter:brightness(1.18) saturate(1.12);
}

@keyframes epcubeMenuNewTextGlow{
  0%,100%{
    opacity:.72;
    filter:brightness(.98) saturate(1.02);
  }
  42%{
    opacity:.92;
    filter:brightness(1.12) saturate(1.08);
  }
  58%{
    opacity:1;
    filter:brightness(1.30) saturate(1.14);
  }
  76%{
    opacity:.84;
    filter:brightness(1.06) saturate(1.05);
  }
}

@keyframes epcubeMenuNewTextSpark{
  0%,100%{
    text-shadow:
      0 0 5px rgba(225,255,235,.72),
      0 0 10px rgba(143,240,178,.92),
      0 0 20px rgba(37,240,139,.78),
      0 0 34px rgba(37,240,139,.42);
  }
  50%{
    text-shadow:
      0 0 6px rgba(255,255,255,.86),
      0 0 14px rgba(143,240,178,1),
      0 0 28px rgba(37,240,139,.94),
      0 0 44px rgba(37,240,139,.56);
  }
}

/* モバイル最適化 */
@media (max-width:760px){

  .epcube-menu-link.has-new .epcube-menu-item-label{
    padding-right:3.8em;
  }

  .epcube-menu-link.has-new .epcube-menu-new-badge{
    top:0.04em;
    right:0;
    font-size:11px;
    letter-spacing:.10em;
  }
}

/* アニメーション軽減環境 */
@media (prefers-reduced-motion:reduce){

  .epcube-menu-link.has-new .epcube-menu-new-badge{
    animation:none !important;
    opacity:1;
    filter:brightness(1.18) saturate(1.1);
    text-shadow:
      0 0 5px rgba(255,255,255,.74),
      0 0 12px rgba(143,240,178,.95),
      0 0 24px rgba(37,240,139,.74);
  }
}


/* =========================================================
   EP CUBE Slide Menu v8.3.2 NEW inline position fix

   NEWをgrid列右端ではなく、
   メニューテキスト直後の右上へ配置する。
   ========================================================= */

/*
 * Grid cellいっぱいに広がっていたlabelを、
 * 内容幅へshrink-wrapする。
 */
.epcube-menu-link.has-new
.epcube-menu-item-label{
  position:relative;

  display:inline-flex!important;

  align-items:flex-start;

  justify-self:start;

  width:max-content;
  max-width:100%;

  min-width:0;

  padding-right:0!important;

  overflow:visible;

  vertical-align:middle;
}


/*
 * absolute配置を解除。
 *
 * DOM上では
 *
 *   label text
 *      ↓
 *   NEW
 *
 * の順番なので、これだけで必ず
 * テキスト直後へ配置される。
 */
.epcube-menu-link.has-new
.epcube-menu-new-badge{
  position:relative!important;

  top:auto!important;
  right:auto!important;
  left:auto!important;
  bottom:auto!important;

  flex:0 0 auto;

  display:inline-block!important;

  width:auto!important;
  min-width:0!important;
  height:auto!important;

  margin:
    0
    0
    0
    7px!important;

  padding:0!important;

  /*
   * 「NEW」を文字列の右上へ少し持ち上げる
   */
  transform:
    translateY(-0.48em)!important;

  vertical-align:top;

  white-space:nowrap;
}


/* hover/currentでも位置を固定 */
.epcube-menu-link.has-new:hover
.epcube-menu-new-badge,
.epcube-menu-link.has-new:focus-visible
.epcube-menu-new-badge,
.epcube-menu-link.has-new.is-current
.epcube-menu-new-badge{
  transform:
    translateY(-0.48em)!important;
}


/* =========================================================
   Mobile
   ========================================================= */

@media(max-width:760px){

  .epcube-menu-link.has-new
  .epcube-menu-item-label{
    display:inline-flex!important;

    justify-self:start;

    width:max-content;
    max-width:100%;

    padding-right:0!important;
  }

  .epcube-menu-link.has-new
  .epcube-menu-new-badge{
    margin-left:6px!important;

    /*
     * MobileはPCより僅かに控えめに持ち上げる
     */
    transform:
      translateY(-0.42em)!important;
  }

  .epcube-menu-link.has-new:hover
  .epcube-menu-new-badge,
  .epcube-menu-link.has-new:focus-visible
  .epcube-menu-new-badge,
  .epcube-menu-link.has-new.is-current
  .epcube-menu-new-badge{
    transform:
      translateY(-0.42em)!important;
  }
}


/* EP CUBE native image menu icons 20260914 */
.epcube-menu-item-icon img{
  display:block;
  width:26px;
  height:26px;
  object-fit:contain;
  pointer-events:none;
  filter:drop-shadow(0 0 5px rgba(86,223,255,.45));
}
@media(max-width:760px){
  .epcube-menu-item-icon img{width:24px;height:24px}
}
