@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap&subset=japanese');

/* RESET CSS
--------------------------------------------------- */
@layer{*,*::after,*::before{box-sizing:border-box}:focus-visible{outline-offset:3px}html{-webkit-text-size-adjust:none;text-size-adjust:none}html{line-height:1.5}html{scrollbar-gutter:stable}h1{font-size:2em;margin-block:.67em}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}@media (forced-colors:active){mark{color:HighlightText;background-color:Highlight}}audio,iframe,img,svg,video{max-block-size:100%;max-inline-size:100%}fieldset{min-inline-size:0}label:has(+input:not([type="radio"],[type="checkbox"]),select,textarea){font-family:inherit;font-size:inherit;display:block}textarea:not([rows]){min-block-size:6em}button,input,select,textarea{font-family:inherit;font-size:inherit}[type="search"]{-webkit-appearance:textfield}@supports (-webkit-touch-callout:none){[type="search"]{border:1px solid -apple-system-secondary-label;background-color:canvas}}input:where([type="tel"],[type="url"],[type="email"],[type="number"]):not(:placeholder-shown){direction:ltr}table{border-collapse:collapse;border:1px solid}th,td{border:1px solid;padding:.25em .5em;vertical-align:top}6::backdrop{background:oklch(0% 0 0 / .3)}dialog,[popover],dialog::backdrop{opacity:0;transition:opacity 150ms ease-out,display 150ms allow-discrete,overlay 150ms allow-discrete}dialog[open],:popover-open,dialog[open]::backdrop{opacity:1}@starting-style{dialog[open],:popover-open,dialog[open]::backdrop{opacity:0}}[hidden]:not([hidden="until-found"]){display:none!important}img{display:block}summary{cursor:default}iframe{border:none}@supports(position-area:block-end span-inline-end){[popover]{margin:0;position-area:block-end span-inline-end}}}
body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol,li{margin:0;padding:0;}
ul,ol{list-style:none;}
html:focus-within{scroll-behavior:smooth;}
body{min-height:100dvh;text-rendering:optimizeSpeed;line-height:1.5;position: relative;}
a:not([class]){text-decoration-skip-ink:auto;}
img,picture,svg,video{max-inline-size: 100%; block-size: auto;display: block;}
input,button,textarea,select{font:inherit;}
@media(prefers-reduced-motion:reduce){
  html:focus-within{scroll-behavior:auto;}
  *,
  *::before,
  *::after{animation-duration:.01ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.01ms !important;
      scroll-behavior:auto !important;}
  }
html {font-size: 62.5%;}
table,th,td{border-width: 0!important;}
img {vertical-align: middle}
* { min-height: 0; }

/* VARIABLES
--------------------------------------------------- */
:root {
  --font-sans: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Noto Sans JP", YuGothic, "ヒラギノ角ゴ ProN W3", Arial, "メイリオ", sans-serif;
  --font-display: 'Noto Sans JP', sans-serif;

  --color-text: #FFF;
  --color-primary: #fcd61f;
  --color-bg: #030102;
  --color-sub: #666;
  --color-muted: #999;
  --color-link: #fcd61f;

  --color-sat: #1b2e5c;
  --color-sun: #6c0b24;
  --color-day: #20282e;
  --color-closed: #1c1c1c;

  --transition-base: 0.3s ease;
  --radius-md: 5px;

  --btn-color: #eb0c38;
  --btn-hover: #b5092a;
  --btn-text: #FFF;
  --btn-radius: 2em;
  --btn-padding-y: clamp(0.6em, 1.2vw, 1em);
  --btn-padding-x: clamp(1.6em, 4vw, 3em);
  --btn-font-size: clamp(1.4rem, 1.2vw, 1.8rem);
  --btn-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  --btn-shadow-hover: 0 6px 20px rgba(0, 0, 0, 0.4);
  --focus-ring: 0 0 0 3px rgba(252, 214, 31, 0.6);
}

/* CONTENTS
--------------------------------------------------- */
.contents {
  inline-size: 100%;
  max-inline-size: 1200px;
  min-inline-size: 320px;
  margin-inline: auto;
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: clamp(1.2rem, 0.909rem + 1.45vw, 2rem);
  font-weight: normal;
  line-height: 1.8;
  background: var(--color-bg);

  /* COMMON
  --------------------------------------------------- */
  & a {
    color: var(--color-link);
    text-decoration: none;
    transition: opacity var(--transition-base);

    &:visited { color: var(--color-link); text-decoration: none; }
    &:hover { opacity: 0.75; text-decoration: underline; }

    &.link {
      display: inline-block;
      padding-left: 1em;
      font-weight: 600;
      text-indent: -1em;
      word-break: break-all;

      &::before,
      &:hover::before {
        content: '';
        display: inline-block;
        width: 0;
        height: 0;
        margin: 0 0 0 5px;
        padding: 0 5px 0 0;
        border-style: solid;
        border-width: 5px 0 5px 5px;
        border-color: transparent transparent transparent var(--color-link);

        @media (max-width: 768px) {
          border-width: 3px 0 3px 3px;
        }
      }
      &::after {
        content: '';
        display: inline-block;
        width: .8em;
        height: .8em;
        mask-image: url('data:image/svg+xml;charset=utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20id%3D%22_%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC_1%22%20data-name%3D%22%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20512%20512%22%3E%20%3Cpath%20d%3D%22M432%2C320h-32c-8.84%2C0-16%2C7.16-16%2C16v112H64V128h144c8.84%2C0%2C16-7.16%2C16-16v-32c0-8.84-7.16-16-16-16H48C21.49%2C64%2C0%2C85.49%2C0%2C112v352c0%2C26.51%2C21.49%2C48%2C48%2C48h352c26.51%2C0%2C48-21.49%2C48-48h0v-128c0-8.84-7.16-16-16-16ZM488%2C0h-128c-21.37%2C0-32.05%2C25.91-17%2C41l35.73%2C35.73-243.73%2C243.64c-9.39%2C9.36-9.42%2C24.55-.06%2C33.94.02.02.04.04.06.06l22.67%2C22.63c9.36%2C9.39%2C24.55%2C9.42%2C33.94.06.02-.02.04-.04.06-.06l243.61-243.68%2C35.72%2C35.68c15%2C15%2C41%2C4.5%2C41-17V24c0-13.25-10.75-24-24-24Z%22%2F%3E%3C%2Fsvg%3E');
        margin: 0 0 0 .25em;
        background: var(--color-link);
        background-size: contain;
        background-repeat: no-repeat;
      }
    }
  }

  & .no-pc { display: none; }
  & .no-sp { display: block; }

  @media screen and (max-width: 767px) {
    & .no-pc { display: block; }
    & .no-sp { display: none; }
  }

  /* LAYOUT
  --------------------------------------------------- */
  & .contents-area { width: 100%; }
  & .contents-inner {
    max-inline-size: 1000px;
    margin-inline: auto;
    padding: clamp(24px, 5vw, 60px) clamp(24px, 5vw, 60px);
  }
  & .contents-box { width: 100%; margin-inline: auto; }

  /* HEADING
  --------------------------------------------------- */
  & h2 {
    color: var(--color-primary);
    font-feature-settings: "palt";
    font-optical-sizing: auto;
    font-family: var(--font-display);
    font-size: clamp(4rem, 7vw, 8rem);
    font-style: normal;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    position: relative;
    margin-block-end: clamp(2.4rem, 5vw, 5.6rem);

    & span {
      display: block;
      color: #FFF;
      font-size: clamp(1.4rem, 1.8vw, 2.4rem);
      font-weight: 400;
      letter-spacing: 0.5em;
      line-height: 1;
      text-align: center;
      text-indent: 0.5em;
      margin-block-start: 0.6em;
    }
  }

  & h3:not(.artists-box h3) {
    font-size: 3rem;
    font-weight: 700;
    font-family: var(--font-display);
    color: var(--color-primary);
    border-block-end: solid 1px var(--color-primary);
    border-inline-start: solid 5px var(--color-primary);
    padding: 0 10px 5px 20px;
    margin-block-end: 50px;

    & span {
      padding-inline-start: 15px;
      font-size: 1.4rem;
      font-family: var(--font-sans);
    }

    @media screen and (max-width: 767px) {
      font-size: 2rem;
      margin-block-end: 25px;

      & span { padding-inline-start: 0; font-size: 1.2rem; display: block; }
    }
  }

  /* HERO
  --------------------------------------------------- */
  & .outline {
    background-image: url('../images/bg.jpg');
    background-attachment: fixed;
    background-size: cover;
    background-position: center;

    & .contents-inner {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: clamp(16px, 3vw, 40px);
    }
    & img {
      max-inline-size: 600px;
      inline-size: 100%;
      block-size: auto;
    }
    & p {
      max-inline-size: 1000px;
      font-family: var(--font-display);
      font-weight: 700;
      text-align: left;
      font-size: clamp(1.4rem, 1rem + 1.5vw, 2.6rem);
      line-height: 1.45;
      inline-size: 100%;
      margin-inline: auto;
      text-shadow: 0 1px 6px rgba(0, 0, 0, 0.7);

      & span { display: block; margin-block-end: 0.4em; }
      & span:last-child { margin-block-end: 0; }
    }
  }

  /* ABOUT
  --------------------------------------------------- */
  & .about-list {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: start;
    font-weight: normal;

    & dt {
      font-weight: normal;
      color: #000;
      background: linear-gradient(180deg, #ffe600 30%, #f9c441 70%);
      text-align: center;
      padding: 5px;
      margin-block-end: 30px;
      min-inline-size: 20%;
    }
    & dd {
      border-block-end: dashed 1px var(--color-primary);
      font-size: 2.2rem;
      padding: 0 5px 5px 40px;
      margin-block-end: 30px;
    }

    @media screen and (max-width: 767px) {
      grid-template-columns: 1fr;
      & dt { inline-size: 100%; padding: 3px 5px; margin-block-end: 8px; }
      & dd { font-size: 1.6rem; padding: 5px 5px 5px 10px; margin-block-end: 24px; border-block-end: none; }
    }
    @media screen and (max-width: 767px) and (min-width: 480px) {
      & dt { font-size: 1.5rem; }
    }
  }

  /* MAP AREA
  --------------------------------------------------- */
  & .map-area {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-auto-rows: 1fr;
    gap: 0;
    margin-block-start: 1em;
    margin-block-end: 5px;

    & img {
      inline-size: 100%;
      block-size: 100%;
      object-fit: contain;
      object-position: center;
      background: #FFF;
      display: block;
    }

    @media screen and (max-width: 768px) {
      grid-template-columns: 1fr;
      grid-auto-rows: auto;
      margin-block-end: 5px;
      & img { block-size: auto; }
    }
  }

  /* STORY LINE
  --------------------------------------------------- */
  & .story-line {
    font-size: clamp(1.4rem, 1.5vw, 1.8rem);
    font-weight: normal;
    line-height: 1.5;
    text-align: left;

    & span { display: block; margin-block-end: 0.6em; }
    & span:last-child { margin-block-end: 0; }
  }

  /* PROGRAM NOTE
  --------------------------------------------------- */
  & .program-note {
    display: table;
    text-align: left;
    margin-inline: auto;
    margin-block-start: clamp(2.4rem, 5vw, 5.6rem);
    margin-block-end: clamp(2.4rem, 5vw, 5.6rem);
    font-size: clamp(1rem, 1.2vw, 1.4rem);
    font-weight: normal;
    line-height: 1.6;
  }

  /* ARTISTS / CHARACTERS
  --------------------------------------------------- */
  & .artists-box {
    & ul {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-start;
      gap: 1%;
    }
    & ul li {
      inline-size: calc(96% / 2);
      margin-block-end: 30px;

      @media screen and (max-width: 767px) {
        inline-size: calc(98% / 2);
      }
    }
    & ul li div { position: relative; }
    & ul li div[data-copyright]::after {
      content: attr(data-copyright);
      display: block;
      padding: 4px 1em 0;
      color: rgba(255, 255, 255, 0.75);
      font-size: 0.9rem;
      line-height: 1.3;
      text-align: left;
    }
    & ul li div img { display: block; inline-size: 100%; block-size: auto; }
    & ul li p { display: block; margin-block-start: 10px; }

    & h3 {
      font-size: clamp(1.2rem, 1.5vw, 1.6rem);
      font-weight: normal;
      font-family: var(--font-sans);
      color: #ffe600;
      display: block;
      text-align: center;
      margin-block-start: 8px;
      border: none;
      padding: 0;
      margin-block-end: 0;
      line-height: 1.4;

      & span {
        display: block;
        font-size: clamp(1.6rem, 2.5vw, 2.4rem);
        font-weight: normal;
        padding-inline-start: 0;
        color: var(--color-text);
        margin-block-start: 0.1em;
        line-height: 1.2;
      }
    }
  }


  /* TICKET TABLE
  --------------------------------------------------- */
  & .ticket-table {
    inline-size: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    margin-block-end: 20px;

    & td, & th { padding: 1em; text-align: center; }
    & th {
      border-width: 1px !important;
      border-style: solid;
      border-color: #000;
      color: #000;
      background: #ffe600;
      vertical-align: middle;
    }
    & td {
      border-width: 1px !important;
      border-style: dotted;
      border-color: #ffe600;
      color: var(--color-text);
      background: #000;
    }

    @media screen and (max-width: 767px) {
      & td, & th { line-height: 1.1; padding: 0.3em; font-size: 1.2rem; }
    }
  }

  /* TICKET SEAT
  --------------------------------------------------- */
  & .ticket-seat {
    padding: 20px 0;
    background: #fdecd2;
    margin: 20px 0;

    & img { margin-inline: auto; max-inline-size: 400px; inline-size: 100%; }

    @media screen and (max-width: 767px) {
      padding: 10px;
      & img { inline-size: 60%; }
    }
  }

  /* TAB
  --------------------------------------------------- */
  & .tab-radio {
    display: none !important;
    position: absolute !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
  }

  & .tab-menu {
    inline-size: 100%;
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    margin: 0;
    padding: 0;
    font-size: 0;
    line-height: 0;
    border-block-end: 1px solid var(--color-primary);

    & li {
      flex: 1;
      margin: 0;
      padding: 0;
      list-style: none;
    }
    & label {
      cursor: pointer;
      display: block;
      inline-size: 100%;
      background: #282b33;
      color: var(--color-primary);
      font-size: 1.4rem;
      line-height: 1.2;
      font-weight: normal;
      text-align: center;
      padding: 1em;
      margin: 0;
      transition: background var(--transition-base), color var(--transition-base);

      &:hover { background: #eb0c38; color: #FFF; }
    }
  }

  & .tab-area:has(#tab-tokyo-2:checked) .tab-menu label[for="tab-tokyo-2"],
  & .tab-area:has(#tab-tokyo-3:checked) .tab-menu label[for="tab-tokyo-3"],
  & .tab-area:has(#tab-tokyo-4:checked) .tab-menu label[for="tab-tokyo-4"] {
    background: #eb0c38;
    color: #FFF;
  }

  & .tabCnt {
    display: none;
    padding: 50px 0 0;

    @media screen and (max-width: 767px) {
      padding: 30px 0 0;
    }
  }
  & .tab-area:has(#tab-tokyo-2:checked) .tabCnt[data-tab="tab-tokyo-2"],
  & .tab-area:has(#tab-tokyo-3:checked) .tabCnt[data-tab="tab-tokyo-3"],
  & .tab-area:has(#tab-tokyo-4:checked) .tabCnt[data-tab="tab-tokyo-4"] {
    display: block;
  }

  /* SALE SCHEDULE
  --------------------------------------------------- */
  & .month {
    display: block;
    text-align: center;
    font-size: 4rem;
    margin-block-end: 50px;
    font-weight: normal;

    & span { font-size: 2.4rem; padding-inline-end: 5px; }

    @media screen and (max-width: 767px) {
      font-size: 3.4rem;
      margin-block-end: 20px;

      & span { font-size: 2rem; }
    }
  }

  & .sale-area {
    display: flex;

    @media screen and (max-width: 767px) {
      display: block;
    }
  }

  & .sale-schedule {
    display: block;
    inline-size: 50%;
    flex: 0 0 50%;

    &:first-child { padding-inline-end: 2%; }
    &:last-child  { padding-inline-start: 2%; }
    &.sale-line { border-inline-start: solid 1px #333; }

    @media screen and (max-width: 1023px) {
      padding: 0;
      &:first-child { padding-inline-end: 20px; }
      &:last-child  { padding-inline-start: 20px; }
    }

    @media screen and (max-width: 767px) {
      inline-size: 100%;
      flex: 0 0 100%;
      &:first-child { padding-inline-end: 0; }
      &:last-child  { padding-inline-start: 0; }
      &.sale-line { border-inline-start: none; }
    }

    & li {
      inline-size: 100%;
      display: flex;
      flex-wrap: nowrap;
      align-items: stretch;
      border-block-end: dashed 1px var(--color-sub);
      padding-block: 0.4em;

      &.satday p { background: var(--color-sat); }
      &.sunday p { background: var(--color-sun); }
      &.close p, &.close span.time-link { background: var(--color-closed); }

      @media screen and (max-width: 767px) {
        padding-block: 0.5em;
      }
    }
    & li p {
      flex: 0 0 5em;
      inline-size: 5em;
      font-size: 1.7rem;
      text-align: center;
      background: var(--color-day);
      padding: 3px;
      font-weight: normal;
      margin-inline-end: 4px;

      & span.day {
        display: inline-block;
        inline-size: 2.2em;
        text-align: center;
        vertical-align: baseline;
        margin-inline-start: 2px;
        white-space: nowrap;
        font-weight: normal;
        font-size: 1.4rem;
      }

      @media screen and (max-width: 767px) {
        font-size: 1.6rem;
      }
    }
    & li span.time-link {
      flex: 1;
      display: block;
      text-align: center;
      padding: 3px;
      font-size: 1.7rem;

      &.reserved { color: #777; }
      &.reserved s { text-decoration: line-through; }

      @media screen and (max-width: 767px) {
        font-size: 1.6rem;
      }
    }
    & li.close span.time-link { flex: 2; }
  }

  /* NOTES
  --------------------------------------------------- */
  & .notes {
    inline-size: 100%;
    margin-inline: auto;

    & li {
      font-size: 1.4rem;
      padding-inline-start: 1em;
      text-indent: -1em;
      text-align: left;

      &::before { content: "※"; }
      & + li { margin-block-start: 0.1em; }
    }
  }

  /* BUTTON
  --------------------------------------------------- */
  & .ticket-btn-area {
    padding-block-end: clamp(32px, 5vw, 60px);
    margin-inline: auto;
    width: 100%;
    max-inline-size: 480px;

    @media screen and (max-width: 767px) {
      margin-inline: auto;
    }
  }
  & a.btn-ticket,
  & .btn.ticket-info-btn {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: clamp(44px, 6vw, 60px);
    margin-inline: auto;
    padding: var(--btn-padding-y) var(--btn-padding-x);
    border-radius: var(--btn-radius);
    cursor: pointer;
    font-size: var(--btn-font-size);
    font-weight: 700;
    letter-spacing: 0.05em;
    text-decoration: none !important;
    transition:
      background-color 0.18s ease-out,
      box-shadow 0.18s ease-out,
      transform 0.12s ease-out;
    white-space: nowrap;

    &[disabled], &[aria-disabled="true"] {
      opacity: 0.25;
      cursor: not-allowed;
      pointer-events: none;
      box-shadow: none;
      transform: none;
    }
  }
  & a.btn-ticket-primary,
  & a.btn-ticket-primary:visited,
  & .btn.ticket-info-btn,
  & .btn.ticket-info-btn:visited {
    max-inline-size: 480px;
    background: var(--btn-color);
    color: var(--btn-text) !important;
    box-shadow: var(--btn-shadow);
    position: relative;
  }
  & a.btn-ticket-primary span { padding-inline-end: 1.6em; }
  & a.btn-ticket-primary span::before {
    content: '';
    width: 1.4em;
    height: 1.4em;
    background: #FFF;
    border-radius: 50%;
    position: absolute;
    top: 0; bottom: 0; right: .8em;
    margin: auto;
  }
  & a.btn-ticket-primary span::after {
    content: '';
    width: .5em;
    height: .5em;
    border-top: 3px solid var(--btn-color);
    border-right: 3px solid var(--btn-color);
    transform: rotate(45deg);
    position: absolute;
    top: 0; bottom: 0; right: 1.3em;
    margin: auto;
  }
  & a.btn-ticket-primary:hover,
  & .btn.ticket-info-btn:hover {
    background: var(--btn-hover);
    color: var(--btn-text) !important;
    box-shadow: var(--btn-shadow-hover);
    transform: translateY(-2px);
  }
  & a.btn-ticket-primary:hover span::after {
    border-top-color: var(--btn-hover);
    border-right-color: var(--btn-hover);
  }
  & a.btn-ticket-primary:active,
  & .btn.ticket-info-btn:active { box-shadow: var(--btn-shadow); transform: translateY(0); }
  & a.btn-ticket-primary:focus-visible,
  & .btn.ticket-info-btn:focus-visible { outline: none; box-shadow: var(--btn-shadow-hover), var(--focus-ring); }

  /* VIDEO
  --------------------------------------------------- */
  & .videoArea { margin-block-end: 20px; }
  & .videoBox { inline-size: 100%; aspect-ratio: 16 / 9; border: none; }
}

