/*reset*/
*, *::after, *::before {
    box-sizing: inherit;
}

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video, hr {
    margin: 0;
    padding: 0;
    border: 0;
}
/* 基本設定 */
:root {
    --text: #1a2c2e;
    --gray: #999999;
    --accent: #d94d7c;
    --accent-dark: #d13b5e;
    --accent-light: #eb8cb2;
    --bg-pink: #f5bdd5;
    --primary: #37afff;
    --primary-dark: #0c78d3;
    --primary-light: #77d3ff;
    --bg-blue: #aee8ff;
    --sub: #ffeb5d;
    --sub-dark: #d3970a;
    --sub-light: #fff59a;
    --bg-yellow: #fffac6;
}

html {
    box-sizing: border-box;
}

body, div, header, footer, main, section, article, aside, nav, h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt, dd, table, blockquote, form, figure {
    box-sizing: inherit;
}

iframe {
    width: 100%;
}

body {
    margin: 0;
    font-family: "Zen Maru Gothic", sans-serif;
    font-weight: 400;
    font-style: normal;
    color: var(--text);
    line-height: 1.6;
    letter-spacing: 1px;
    font-size: 17px;
}

img {
    max-width: 100%;
    height: auto;
}

.zen-m {
    font-family: "Zen Maru Gothic", sans-serif;
    font-weight: 500;
    font-style: normal;
}

.zen-b {
    font-family: "Zen Maru Gothic", sans-serif;
    font-weight: 700;
    font-style: normal;
}

h2 {
    font-size: 2.3em;
    font-weight: 700;
    text-align: center;
    margin: 1em auto;

    &.pink {
        color: var(--accent-dark);
    }

    &.blue {
        color: var(--primary-dark);
    }

    &.yellow {
        color: var(--sub-dark);
    }
}
/*遅延読み込み*/
.fade {
  opacity: 0; /* 初期状態は透明 */
  transform: translateY(30px); /* 少し下にずらしておく */
  transition: opacity 0.5s ease, transform 0.5s ease; /* アニメーション効果 */
}
.fade.visible {
  opacity: 1; /* 表示 */
  transform: translateY(0); /* 元の位置に戻す */
}
/*ヘッダー*/
header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 40px;
  background-color: rgba(255, 255, 255, 0.8);
  z-index: 1000;
  border-bottom:1px solid #dddddd;
  padding:0.5em;
    & img{
        display: inline-block;
        width:20%;
        max-width:80px;
    }
    & h1{display: flex;
    align-items: center; /* 画像と文字の縦の中心線を揃える */
        font-size:0.8em;
    }
    & span{
        margin-left:0.5em;
    }
    & small{
        font-size:0.7em;
    }
}
/*ボタン*/
.btn {
    display: inline-block;
    border-radius: 10px;
    margin: 1em auto;
    padding: 0.3em 1em;

    & a {
        display: block;
        color: #FFF;
        text-decoration: none;
        font-weight: 700;
        font-size: 1.2em;
        width:100%;
        height:100%;
    }

    &.entry {
        background: var(--primary-dark);
        color: #FFF !important;
        border: 2px solid var(--text);
        border-bottom: 4px solid var(--text);
        transition: background-color ease 0.2s, color ease 0.2s;
        position: relative;
        padding-right: 70px;
    }

    &::after {
        content: "";
        width: 25px;
        height: 25px;
        background: url("./link_icon.png") no-repeat;
        background-size: auto;
        background-size: 100%;
        position: absolute;
        right: 20px;
        bottom: 50%;
        margin-bottom: -13px;
    }
}
.dots-bg{
    background:url(./bg_pc_left.svg) repeat-y left top,url(./bg_pc_right.svg) repeat-y right top,url(./bg_dot.png) repeat center center ;
    position: absolute;
    height:150vh;
    width:100%;
    z-index: 0;
    background-size: 25%,25%,60px;
}
/* 1st View コンテナ */
.first-view {
    position: relative;
    width: 100%;
    min-height: 500px;
    padding: 40px 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
}

.container {
    z-index: 10;
    text-align: center;
    max-width: 1200px;
    width: 100%;
    position: relative;
}

.target-text {
	width: min(40%, 500px);
	margin: 1em auto 0em;
}
/*バナー*/
.bnr{
    width:200px;
    position: absolute;
    right:10px;
    bottom:40px;
    filter: drop-shadow(5px 5px 0px rgba(100, 110, 110, 0.2));
}
/* メインビジュアル（キャラクターとタイトル） */
.main-visual {
    display: grid;
    grid-template-columns:
        1fr min(60%, 350px) min(40%, 280px) 1fr;
    align-items: center;
    gap: 10px;
}

.char-left {
    grid-column: 1 / 2;
    grid-row: 1 / 3;
}

.event-title {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
    width: 100;
    margin: 0.5em auto;
}

.guest-badge {
    grid-column: 3 / 4;
    grid-row: 1 / 2;
    transform: translateX(-2px);
}
.guest-badge img{
    width:48%;
}
.char-right {
    grid-column: 4 / 5;
    grid-row: 1 / 3;
}

.catchphrase {
    grid-column: 2 / 4;
    grid-row: 2 / 3;
    transform: translateY(-20px);
}

/*スマホ*/
/* --- PC版（基本設定） --- */
.main-visual {
    display: grid;
    grid-template-columns:1fr 1fr;
    align-items: center;
    gap: 10px;
}

/* PC版の子要素の配置 */

.main-visual .event-title {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
}

.main-visual .guest-badge {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
}

.main-visual .catchphrase {
    grid-column: 1 / 3;
    grid-row: 2 / 3;
   width:100%;
}

.catchphrase img{
   max-width:500px;
}

.event-info {
    width: clamp(260px, 100% - 200px - 1em, 650px);
    margin:0px auto;
    margin-top:-20px;
}
.bnr {
	width: 205px;
	position: absolute;
	right: 0;
	bottom: 100px;
	filter: drop-shadow(5px 5px 0px rgba(100, 110, 110, 0.2));
}
.sp {
    display: none;
}

/*1200px以下（ノートPC・タブレット横向き対応） */
@media screen and (max-width: 1200px) {
    .container{padding-top:2em;}
 .dots-bg {
	background: url(./bg_pc_left.svg) repeat-y -5% top,url(./bg_pc_right.svg) repeat-y 105% top,url(./bg_dot.png) repeat center center;
	height: 250vh;
	background-size: 22%,22%,52px;
}
 .main-visual {
    max-width:960px;
    margin:0 auto;
	grid-template-columns: 1fr 1fr;
	gap: 15px;
}
.main-visual .catchphrase {
	transform: translateY(-20px);
	padding: 0em 1.5em 1em;
}
.event-info {
	width: clamp(260px, 100% - 200px - 1em, 580px);
	margin: 0px auto;
	margin-top: -20px;
}
.bnr {
	width: 180px;
	position: absolute;
	right: 3%;
	bottom: 93px;
	filter: drop-shadow(5px 5px 0px rgba(100, 110, 110, 0.2));
    z-index: 10;
}
}
@media screen and (max-width: 1024px) {
    .main-visual {
	max-width: 800px;
	grid-template-columns: 1fr 1fr;
	gap: 15px;
}.event-info {
	width: clamp(260px, 100% - 366px - 1em, 400px);
	margin-top: -20px;
}.bnr {
	width: 155px;
	position: absolute;
	right: 2%;
	bottom: 86px;
	filter: drop-shadow(5px 5px 0px rgba(100, 110, 110, 0.2));
	z-index: 10;
}
body{font-size:13px;}
.inner_box{max-width:700px!important;}
.card2 {
	width: calc(100% / 3 - 2em)!important;
}
}
/* --- スマホ版（メディアクエリ） --- */
@media screen and (max-width: 768px) {
.container {
	max-width: 390px;
}

    body{font-size:14px;}
    .container {
	padding-top: 3em;
}
.dots-bg{
    background:url(./bg_sp_top.png) repeat-x left top,url(./bg_sp_bottom.png) repeat-x center 95%,url(./bg_dot.png) repeat center center ;
    position: absolute;
    height:100vh;
    min-height:840px;
    width:100%;
    z-index: 0;
    background-size: 114%,114%,40px;
}
    .main-visual {
        grid-template-columns: 1fr;
    }

.main-visual .event-title {
	grid-column: 1 / 3;
	grid-row: auto;
	order: 1;
	margin: 0.5em auto;
	padding: 0.3em 1em;
}
.main-visual .guest-badge {
	grid-column: 1 / 3;
	grid-row: auto;
	order: 2;
	margin: -1em auto 1em;
	max-width: 100%;
	transform: translateX(-5px);
}

.main-visual .guest-badge img{
    max-width:47%;
}
   
.main-visual .catchphrase {
	grid-column: 1 / 3;
	grid-row: auto;
	order: 5;
	margin: -1.5em auto 1em;
    width:100%;
	transform: none;
}
   
.main-visual .catchphrase img{
    width:100%;
}
.event-info {
	width: clamp(200px, 100% - 180px - 1em, 147px);
	margin: 0px 20px;
	margin-top: -10px;
}
.bnr {
	width: 150px;
	bottom: 103px;
	filter: none;
	z-index: 10;
	right: 5px;
}
    .sp {
        display: block;
    }

    .pc {
        display: none;
    }
    .target-text {
	width: min(55%, 500px);
}

}

@media screen and (max-width: 450px ){
.btn{font-size:1em;}}
@media screen and (max-width: 370px ){
.bnr {
	width: 130px;
	bottom: 70px;
	filter: none;
	z-index: 10;
	right: 5px;
}.main-visual .guest-badge {
	grid-column: 1 / 3;
	grid-row: auto;
	order: 2;
	margin: -1em auto 1em;
	max-width: 200px;
	transform: translateX(-5px);
}
.main-visual .catchphrase {
	grid-column: 1 / 3;
	grid-row: auto;
	order: 5;
	margin: 0 auto;
	max-width: 135px;
	margin-top: -100px;
	transform: none;
}
.first-view p{
    font-size :12px!important;
}
.main-visual .char-right {
	max-width: 120px;
}.main-visual .char-left {
	max-width: 120px;
}}
/*スマホここまで*/

/*セクション*/
section {
    padding: 3em 0;
    isolation: isolate;
}

.inner_box {
    width: 100%;
    max-width: 1000px;
    margin: 1em auto 3em;
}
@media screen and (max-width: 768px) { 
    .inner_box{width:93%;}}
    

/*カード*/
.card_area {
    display: flex;
    justify-content: center;
    align-items: stretch;
    gap: 25px;
    flex-wrap: wrap;
    width: 100%;
    margin: 2em auto;
}

.card {
    width: calc(50% - 1em);
    max-width: 490px;
    background: #FFFFFF;
    padding: 1.5em;
    border-radius: 15px;
    border: 3px solid var(--primary);
    position: relative;
    margin-bottom: 0.5em;

    & img {
        border-radius: 8px;
    }

    &.w100 {
        width: calc(100% - 0.5em);
        max-width: 100%;
    }

    &.w100 img {
        width: 49%;
        padding: 2px;
    }

    & img {
        margin: 0.5em auto;
    }

    & figure {
        margin: 0.5em auto;
    }

    & h3 {
        font-size: 1.45em;
        color: var(--primary-dark);
        text-align: center;
        border-bottom: 2px dotted var(--primary);
        padding-bottom: 10px;
    }

    & figure figcaption {
        font-size: 0.9em;
    }

    &::before {
        content: "";
        position: absolute;
        top: 15px;
        left: 15px;
        width: 100%;
        height: 100%;
        border-radius: inherit;
        z-index: -1;

        background-color: transparent;
        background-image:
            radial-gradient(var(--primary) 15%, transparent 15%),
            radial-gradient(var(--primary) 15%, transparent 15%);
        background-size: 15px 15px;
        background-position: 0 0, 7px 7px;
    }
}
.talk_img{
    display: flex;
    flex-wrap: wrap;
}
.talk_img span{
    width:100%;
    max-width:400px;
}.talk_img img{
    width:100%!important;
}
.talk_info{
    display: inline-block;
    width:calc( 100% - 400px - 1em );
}
@media screen and (max-width: 768px) {
.talk_info{width:100%;}
}

.card2 {
    width: calc(100% / 3 - 1em);
    padding: 0.8em;
    border-radius: 15px;
    position: relative;
    margin-bottom: 0.5em;
    text-align: center;

    & img {
        border-radius: 8px;
    }

    & img {
        margin: 0.5em auto;
    }

    & h3 {
        font-size: 1.2em;
        background-color: #FFF;
        padding: 0.5em;
        border-radius: 5px;
    }
    
    & small{
        background:#666666;
        color: #fff;
        font-weight: 500;
        display: block;
    }

}
@media screen and (max-width: 768px) { 
   .card_area {
	gap: 10px;
	width: 100%;
}
.card{width:100%;}
.card2 {
	width: calc(100% / 3 - 0.5em);
	padding: 0em;
	border-radius: 15px;
	position: relative;
	margin-bottom: 0.5em;
	text-align: center;
& h3 {
	font-size: 12px;
	background-color: #FFF;
	padding: 0.5em;
	border-radius: 5px;
    line-height: 1.2;
}}}

/*背景色*/

.bg_blue {
    background: var(--bg-blue);
}

.bg_blue_dark {
    background: var(--primary-dark);
    color: #FFF;
}

.bg_pink {
    background: var(--bg-pink);
}

.bg_yellow {
    background: var(--bg-yellow);
}
.bg_dot3{
    background: url(./bg_dot3.png) , var(--bg-yellow);
    background-size:auto,100%;}

.bg_cross {
    background: url(./bg_cross.png);
}

.bg_dot {
    background: url(./bg_dot.png);
}

.bg_dot2 {
    background: url(./bg_dot2.png);
}

.bg_line {
    background: url(./bg_line.png);
}

.note {
    display: block;
    background-color: rgba(200, 200, 200, 0.3);
    border-radius: 20px;
    padding: 1em;
    font-size: 0.9em;

    & ul{
        margin-left:1.5em;
    }
}

ul,
ol {
    margin-left: 1em;
}

/*ごあいさつ*/
.quote {
  position: relative;
  display: inline-block;
  padding: 0 40px;

  /* 前の引用符 " */
  &::before {
    content: "\201C"; 
    position: absolute;
    top: -5px; 
    left: -5px;
    font-size: 80px; 
    color: var(--bg-pink);
    font-family: serif; 
    line-height: 1;
  }

  /* 後ろの引用符 " */
  &::after {
    content: "\201D"; 
    position: absolute;
    bottom: -50px; 
    right: 0;
    font-size: 80px;
    color: var(--bg-pink);
    font-family: serif;
    line-height: 1;
  }
}
.txt_area{
    font-size:1.2em;line-height:2;text-align: center;font-weight: 500;margin:1em auto 3em;
}

@media screen and (max-width: 768px) {
     h2{font-size:1.8em;}
    .txt_area{font-size:0.95em;padding:0.5em;}
h2.quote{font-size:1.5em;}
#about{background:url(./bg_dot.png);}}

/*コンテンツ*/
#contents,
#present {
    border-radius: 50px;overflow: hidden;
}

/*プレゼント*/
.pre_info {
    margin:2em auto;
    font-size:1.1em;

    & h4 {
        font-size: 1.3em;
        display: block;
        width: 100%;
        padding: 10px 15px;
        margin: 0.5em auto;
        background-color: rgba(255, 255, 255, 0.7);
    }

    & h4.blue {
        color: var(--primary-dark);
        border-bottom: 2px dotted var(--primary);
        border-left: 4px solid var(--primary);
    }

    & h4.yellow {
        color: var(--sub-dark);
        border-bottom: 2px dotted var(--sub);
        border-left: 4px solid var(--sub);
    }

    & h4.pink {
        color: var(--accent-dark);
        border-bottom: 2px dotted var(--accent);
        border-left: 4px solid var(--accent);
    }

    & .pre_txt {
        padding: 0.5em;
        font-weight: 500;
        font-size:1.15em;
    }

    & .howto {
        font-size:1em;
        padding: 0.5em;
    }
    & .howto li{
        margin-bottom:0.5em;
    }
}

/*スタンプ*/
.present_list {
    margin: 1em auto;
    display: flex;
    flex-wrap: wrap;

    & li {
        width: calc(100% / 3 - 6px);
        padding: 1em 0.5em;
        margin: 3px;
        text-align: center;
        background: rgba(255, 255, 255, 0.5);
        border: 2px solid var(--sub);
        border-radius: 20px;
        list-style: none;
        line-height: 1.4;
    }

    & li i {
        display: inline-block;
    }

    & span {
        border-radius: 60px;
        display: block;
        background: var(--sub-dark);
        font-weight: bold;
        line-height: 1.8;
        width: 100%;
        color: #FFF;
        font-size: 14px;
    }
}

.icon_card {
    display: block;
    margin: 10px auto;
    width: 70%;
    max-width: 160px;
}



/*インフォメーション*/
.tbl {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin: 1em auto;
    background: #FFFFFF;
    padding: 2em;
    border-radius: 20px;
}

.tbl dt {
    width: 100px;
    font-size: 0.85em;
    font-weight: 700;
}

.tbl dd {
    width: calc(100% - 170px);
    font-size: 1.2em;
    font-weight: 500;
}

.map {
    width: 100%;
    margin: 2em auto;
    background-color: #eeeeee;
    border-radius: 20px;
    padding: 1em 2em;
}

@media screen and (max-width: 768px) { 
    .tbl dt {
    width: 100%;
    font-size: 0.85em;
    background:var(--bg-blue);
    border-radius:5px;
    padding:4px;
}
.tbl dd {
    width: 100%;
    font-size: 1.1em;
}
.present_list li i img{
    width:10px;
}
.present_list li b{line-height: 1.3;
}
}
.pre_info h5{
    color:var(--sub-dark);
    font-size:1em;
    margin:1em auto -0.5em;
    text-align: center;
}
/*FAQ*/
details{
    font-size:1em;
  padding-bottom:0.5em;
}
.details-summary {
  cursor: pointer;
  transition: 0.2s;
  padding: 0.4em 0.8em;
  border-radius: 6px;
  background: #FFF;
  font-size:1.2em;
  font-weight: 600;
  border: 3px solid var(--sub);
  margin-bottom:0.3em;

  &::after {
  content: "";
  display: block;
}
}
details[open]::details-content {
  height: auto;
  padding: 1em 1.5em;
  margin-bottom:0.5em;
  background-color:var(--bg-yellow);
  border-radius:5px
}
/* フッター */
.organizer {
    padding: 2em 1em 1em;
    font-size: 0.85rem;
    text-align: center;
    margin-bottom: 0;
}


/*スタイルシート*/
figure, figure img {
  border-radius: clamp(0.5rem, 2vw, 1rem);
}

.c-inner h2, .c-inner h3, .c-inner h4 {
  text-align: center
}
.c-inner h3 small {
  margin-top: -0.2em;
  display: block;
  margin-bottom: 2em;
}
section {
  padding-top: 6em;
  padding-bottom: 6em;
  margin: 0em auto 0em;
  width: 100%;
  position: relative;
}
section:last-child {
  margin-bottom: 0
}
.c-inner {
  position: relative;
  z-index: 10;
  padding: clamp(0.5rem, 2vw, 1rem) clamp(1rem, 4vw, 2rem);
  width: 100%;
  max-width: 1400px;
  margin: 0 auto
}
.c-inner-min {
  max-width: 1000px;
}
.c-inner figure {
  position: relative;
  display: block;
  margin-bottom: 1rem
}
.inner_box {
  margin: 2rem auto
}
.container {
  width: 100%;
}
.c-note {
  padding: 1.3rem;
  border-radius: clamp(0.5rem, 2vw, 1rem);
  font-size: clamp(0.6rem, 2vw, 0.7rem);
}
.c-note ul {
  margin: .5rem auto
}
.c-note li {
  margin-left: 1rem;
  list-style: disc;
}

/*スケジュールやっつけ*/
:root {
            --bg-color: #fffde1;     /* 背景の薄い黄色 */
            --grid-color: #ebdfa4;   /* 方眼の線 */
            --text-color: #333333;   /* 文字色 */
            --accent-color: #b1a700; /* タイトル色 */
        }

        #timetable{
            font-family: "Helvetica Neue", Arial, "Zen Maru Gothic", sans-serif;
           
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: var(--bg-color);
            background-image: 
                linear-gradient(var(--grid-color) 1px, transparent 1px),
                linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
            background-size: 24px 24px; /* 方眼のサイズ */
        }

        /* スケジュール全体のコンテナ */
        .schedule-container {
            width: 100%;
            max-width: 450px;
            padding: 0px 30px 30px 30px;
            position: relative;
            margin: 0 auto;
            border-radius: 8px;
            overflow: hidden;

            /* タイトル */
            .title {
                font-size: 24px;
                color: var(--accent-color);
                font-weight: bold;
                margin-bottom: 20px;
                letter-spacing: 1px;
                
                span {
                    font-size: 16px;
                    margin-left: 2px;
                    font-weight: normal;
                }
            }

            /* スケジュール一覧（Gridレイアウト） */
            .grid {
                display: grid;
                grid-template-columns: auto 1fr;
                column-gap: 20px;
                color: var(--text-color);
                font-weight: bold;
                font-size: 16px;
                line-height: 24px; /* 方眼の縦サイズ(24px)と同期させて綺麗に配置 */

                .time {
                    white-space: nowrap;
                }

                .content {
                    margin-bottom: 12px; /* 各項目の間隔 */
                }
            }

            /* 下部の注意書き */
            .note {
                font-size: 11px;
                color: #555;
                margin-top: 20px;
                font-weight: bold;
            }

            /* レスポンシブ対応（画面幅が狭いスマホ用クエリのネスト） */
            @media (max-width: 400px) {
                padding: 30px 20px 20px 20px;
                background-size: 20px 20px; /* 方眼を少し小さく */
                
                &::after { right: 15px; }
                .title {
                    font-size: 20px;
                    span { font-size: 14px; }
                }
                .grid {
                    font-size: 14px;
                    line-height: 20px; /* 方眼に同期 */
                    column-gap: 12px;
                    .content { margin-bottom: 10px; }
                }
                .note { font-size: 10px; }
            }
        }
    </style>