:root{--color-bg:#fff;--color-text:#4b382c;--color-accent:#4f6f52;--color-border:#d8d0c8;--space-xs:8px;--space-sm:16px;--space-md:24px;--space-lg:48px;--space-xl:80px;--space-xxl:120px;--content-width:1200px;--text-width:680px}body{font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;background:var(--color-bg);color:var(--color-text);font-size:16px;line-height:1.8}body.modal-open{overflow:hidden}.en,.eyebrow,.section-number{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.container{width:calc(100% - 40px);max-width:var(--content-width);margin-inline:auto}a,button{touch-action:manipulation}button,a.text-link{min-height:44px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:6px}section,article{scroll-margin-top:100px}.skip-link{position:fixed;top:10px;left:20px;transform:translateY(-160%);padding:12px;background:white;z-index:100}.skip-link:focus{transform:none}.site-header{position:fixed;top:0;left:0;width:100%;padding:21px 20px;display:flex;align-items:center;justify-content:space-between;z-index:20;transition:background .4s,border-color .4s;border-bottom:1px solid transparent}.site-header.is-scrolled{background:rgba(255,255,255,.96);border-color:var(--color-border)}.brand{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;font-weight:700;line-height:1.2;letter-spacing:-.03em}.brand>span{display:block;font-size:10px;letter-spacing:.015em;margin-top:5px}.brand-year{margin-left:4px}.header-right{display:flex;align-items:center;gap:50px}.header-date{display:none;font-size:12px;letter-spacing:.08em}.menu-toggle{display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.06em}.menu-icon{width:23px;height:8px;border-top:1px solid;border-bottom:1px solid}.hero{min-height:85svh;position:relative;display:flex;align-items:flex-end;overflow:hidden;background:#eeeae4}.hero-media{position:absolute;inset:0;animation:hero-in 1.5s both}.hero-media picture,.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 45%}.hero.has-photo::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.55))}.hero.has-photo{color:white}.photo-placeholder{background:#eeeae4;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#736458}.hero-placeholder{height:100%;justify-content:flex-start;padding-top:25svh;gap:10px}.hero-placeholder>p{font-size:18px;letter-spacing:.18em}.eyebrow{font-size:12px;letter-spacing:.1em;font-weight:500}.placeholder-note{font-size:12px}.hero-content{position:relative;z-index:1;width:100%;padding:0 20px 55px;animation:text-in 1s .35s both}.hero-kicker{font-size:12px;letter-spacing:.13em;margin-bottom:20px}.hero h1{font-size:clamp(29px,7.2vw,84px);letter-spacing:-.055em;line-height:1.03;font-weight:700}.hero-year{display:flex;align-items:center;gap:22px;margin-top:4px}.hero-year-line{width:65px;height:1px;background:currentColor}.hero-meta{margin-top:24px;font-size:13px;letter-spacing:.03em;line-height:1.8}.hero-meta p:first-child{font-size:19px;font-weight:500}.day{font-size:10px;margin-inline:3px}.scroll-link{position:absolute;bottom:15px;right:20px;z-index:2;font-size:10px;letter-spacing:.12em;display:flex;align-items:center;gap:20px;min-height:44px}.scroll-link span{font-size:20px}.section{padding-block:80px}.section-heading h2{font-size:28px;line-height:1.2;letter-spacing:-.04em;font-weight:700;margin:15px 0 12px}.section-heading>p:last-of-type{font-size:13px}.section-number{font-size:11px;letter-spacing:.1em;color:var(--color-accent)}.event-body,.about-body,.access-body{margin-top:40px}.event-name{font-size:14px}.event-date{font-size:clamp(38px,10vw,57px);line-height:1.3;letter-spacing:-.04em;margin-top:24px;white-space:nowrap}.date-day{font-size:11px;letter-spacing:0;margin-left:7px}.date-separator{font-size:25px;margin-inline:12px}.event-year{font-size:13px;letter-spacing:.08em;margin-bottom:24px}.event-details>div{display:grid;grid-template-columns:85px 1fr;padding:22px 0;border-top:1px solid var(--color-border);gap:12px}.event-details dt{font-size:13px;padding-top:3px}.event-details strong{font-size:24px;font-weight:500;line-height:1.2}.event-details small{display:block;font-size:12px;margin-top:12px;line-height:1.9}.bring-note{border-left:2px solid var(--color-accent);padding:4px 0 4px 20px;margin-top:30px;color:var(--color-accent)}.bring-note p{margin-block:12px;font-size:15px;font-weight:600}.bring-note small{font-size:12px;display:block}.about-section{border-top:1px solid var(--color-border)}.about-body h3{font-size:27px;line-height:1.9;font-weight:500;letter-spacing:.03em;margin-bottom:32px}.prose{max-width:var(--text-width);font-size:14px;line-height:2.2}.prose p+p{margin-top:24px}.text-link{display:inline-flex;align-items:center;justify-content:space-between;gap:48px;border-bottom:1px solid var(--color-border);font-size:12px;letter-spacing:.06em;padding-block:14px;min-height:48px}.text-link span{font-size:22px;line-height:1;transition:transform .45s}.text-link:hover span{transform:translateX(5px)}.about-body .text-link{margin-top:30px}.contents-heading>p{font-size:14px;margin-top:24px}.category-grid{margin-top:40px;display:grid;gap:44px}.category button{display:block;width:100%;text-align:left}.category-photo{aspect-ratio:4/3;overflow:hidden;transition:transform .6s}.category-photo span{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:10px;letter-spacing:.09em}.category-photo img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.food-photo{background:#f1eeea}.goods-photo{background:#e9e8e2}.workshop-photo{background:#e8ece6}.stage-photo{background:#ede9e5}.category-caption{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.category-caption h3{font-size:28px;line-height:1.2;letter-spacing:-.03em}.category-caption p{font-size:12px;margin-top:7px}.category-arrow{font-size:26px;transition:transform .5s}.category button:hover .category-arrow{transform:translate(4px,-4px)}.category button:hover .category-photo{transform:scale(1.015)}.venue-section{border-top:1px solid var(--color-border)}.venue-section .text-link{margin-top:25px}.map-preview{background:#f2f4f0;border:1px solid #e2e7df;min-height:300px;margin-top:35px;padding:35px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-accent);text-align:center}.map-preview>p{font-size:25px;line-height:1.8;letter-spacing:.08em;margin:20px 0}.map-status{font-size:12px;border-top:1px solid #c7d0c1;padding-top:18px}.access-section{border-top:1px solid var(--color-border)}.access-body h3{font-size:23px;font-weight:500;margin:16px 0 24px}.access-body>p:not(.eyebrow){font-size:14px;line-height:2}.access-body .text-link{display:flex;width:220px;margin-top:25px}.partners{border-top:1px solid var(--color-border);padding-block:50px 80px;display:grid;gap:36px}.partners h2{margin-bottom:18px;color:var(--color-accent)}.partners p{font-size:14px;line-height:2}.partners .team{font-size:12px;margin-top:10px;letter-spacing:.03em}.site-footer{border-top:1px solid var(--color-border);padding-block:50px 25px}.footer-title{font-size:clamp(48px,10vw,116px);line-height:.98;letter-spacing:-.06em;font-weight:700;display:inline-block}.footer-bottom{margin-top:45px;display:flex;align-items:flex-start;flex-direction:column;gap:20px}.footer-bottom>p{font-size:12px}.footer-bottom small{font-size:10px;letter-spacing:.04em}.back-top{font-size:10px;letter-spacing:.05em;min-height:44px;display:flex;align-items:center}.navigation{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;border:0;margin:0;padding:20px;background:#fff}.navigation::backdrop{background:white}.menu-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.menu-top .eyebrow{max-width:170px;font-size:10px}.menu-close{display:flex;align-items:center;gap:15px;font-size:12px}.menu-close span{font-size:30px;font-weight:300}.navigation nav{display:flex;flex-direction:column;align-items:flex-start;gap:0;padding-top:24px}.navigation nav a{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:clamp(23px,3.8svh,37px);line-height:1.25;min-height:44px;display:flex;align-items:center;font-weight:500;letter-spacing:-.03em}.navigation[open] nav a{animation:text-in .5s both}.navigation nav a:hover{color:var(--color-accent)}.menu-instagram{margin-top:20px}.notice-dialog{width:calc(100% - 40px);max-width:460px;border:1px solid var(--color-border);padding:48px 30px}.notice-dialog::backdrop{background:rgba(40,31,24,.4)}.notice-dialog h2{font-size:23px;margin:20px 0}.notice-dialog>p:not(.eyebrow){font-size:14px}.notice-close{position:absolute;right:12px;top:8px;min-width:44px;font-size:28px}.notice-dismiss{margin-top:25px}.js .reveal{opacity:0;transform:translateY(20px);transition:opacity .75s,transform .75s}.js .reveal.is-visible{opacity:1;transform:none}@keyframes hero-in{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}@keyframes text-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:768px){.container{width:calc(100% - 96px)}.site-header{padding:26px 48px}.brand{font-size:19px}.brand>span{font-size:12px}.header-date{display:block}.hero{min-height:90svh}.hero-content{padding:170px 48px 70px}.hero-kicker{font-size:14px;margin-bottom:28px}.hero-meta{display:flex;align-items:center;gap:45px;margin-top:30px}.hero-meta p:first-child{font-size:24px}.hero-year-line{width:110px;margin-left:10px}.scroll-link{right:48px;bottom:32px}.section{padding-block:120px}.event-section,.about-section,.venue-section,.access-section{display:grid;grid-template-columns:1fr 1.4fr;gap:70px}.event-body,.about-body,.access-body{margin-top:0}.section-heading h2{font-size:28px}.event-date{font-size:61px}.date-day{font-size:12px}.date-separator{margin-inline:17px}.mobile-only{display:none}.about-body h3{font-size:34px}.prose{font-size:16px}.contents-heading{display:flex;justify-content:space-between;align-items:flex-end}.contents-heading>p{margin-bottom:10px}.category-grid{grid-template-columns:1fr 1fr;gap:65px 60px;margin-top:60px;align-items:start}.category:nth-child(even){padding-top:95px}.category:nth-child(3){width:86%}.category-stage{width:85%}.category-stage .category-photo{aspect-ratio:16/10}.category-caption h3{font-size:28px}.category-caption p{font-size:13px}.map-preview{margin-top:0;min-height:360px}.partners{grid-template-columns:1fr 1.4fr;gap:70px;padding-block:60px 90px}.partners p{font-size:16px}.site-footer{padding-top:65px}.footer-bottom{display:grid;grid-template-columns:1fr auto;align-items:center;gap:35px}.footer-bottom .text-link{justify-self:end}.back-top{justify-self:end}.navigation{padding:30px 60px}.navigation nav{padding-top:30px;max-width:1100px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px 100px}.navigation nav a{font-size:46px;min-height:64px}.navigation .menu-instagram{margin-top:30px}.menu-top .eyebrow{max-width:none;font-size:12px}}
@media(min-width:1400px){.hero-content{padding-left:max(48px,calc((100vw - 1200px)/2))}.hero h1{font-size:92px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}}
/* 縦写真の城とオブジェクトを残し、文字を下の芝生に重ねる。 */
.hero{min-height:max(85svh,740px)}.hero-media img{object-position:center 49%}.hero-content{padding-bottom:40px}.hero.has-photo::after{inset:65% 0 0;background:linear-gradient(transparent,rgba(17,30,12,.76))}.hero-kicker{margin-bottom:12px}.hero h1{font-size:clamp(27px,6.8vw,48px)}.hero-meta{margin-top:16px}.scroll-link{display:none}
@media(min-width:768px){.hero{min-height:850px;height:95svh;max-height:1100px;background:#fff;color:var(--color-text)!important}.hero-media{left:42%;width:58%}.hero-media img{object-position:center 70%}.hero.has-photo::after{display:none}.hero-content{padding:0 0 80px 48px;width:60%;pointer-events:none}.hero h1{font-size:clamp(42px,5.3vw,76px);text-shadow:0 1px 18px rgba(255,255,255,.8)}.hero-kicker{margin-bottom:25px}.hero-meta{display:block;margin-top:30px}.hero-meta p:last-child{font-size:12px}.hero-year{margin-top:12px}.hero-year-line{width:70px}.header-date{display:none}.scroll-link{display:flex;left:48px;right:auto;bottom:20px}}

/* ABOUTとCONTENTSをつなぐ会場のパノラマ写真。トリミングせず全景を表示。 */
.festival-panorama{width:100%;margin:0 auto;max-width:2000px}
.festival-panorama picture{display:block}
.festival-panorama img{display:block;width:100%;height:auto}

/* 日本語の開催情報と今年のテーマ */
.hero-meta p:first-child{font-size:clamp(16px,4.2vw,22px);font-weight:600;letter-spacing:0;line-height:1.8}
.hero-meta p:last-child{font-size:14px;letter-spacing:.04em}
.event-theme{margin-bottom:32px;padding-bottom:28px;border-bottom:1px solid var(--color-border);font-size:16px;line-height:2}
.event-theme p:first-child{font-weight:600;color:var(--color-accent)}
.event-theme p+p{margin-top:8px}

/* 提供されたCONTENTS写真の表示位置 */
.category-photo picture{display:block;width:100%;height:100%}
.coffee-photo img{object-position:50% 45%}
.food-photo img{object-position:25% 50%}
.workshop-photo img{object-position:50% 55%}
.stage-photo img{object-position:60% 50%}
.category-photo{position:relative}
.category-photo picture{position:absolute;inset:0}

.goods-photo img{object-position:50% 50%}

/* Googleマップを画面幅に合わせて表示 */
.access-map{margin-top:32px;width:100%;aspect-ratio:4/3}
.access-map iframe{display:block;width:100%;height:100%;border:0}

/* 持参物とごみ削減へのお願い */
.request-section{border-top:1px solid var(--color-border);display:grid;gap:32px}
.request-copy>p{font-size:16px;line-height:2}
.request-copy .request-lead{margin:28px 0 16px;color:var(--color-accent)}
.request-photo picture,.request-photo img{display:block;width:100%}
.request-photo img{height:auto}
@media(min-width:768px){
  .request-section{grid-template-columns:1fr 1.4fr;gap:70px;align-items:center}
}

/* ABOUTの出店者・会場写真 */
.about-gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;margin-top:48px;min-width:0}
.about-gallery-photo picture,.about-gallery-photo img{display:block;width:100%}
.about-gallery-photo img{height:auto}
@media(min-width:768px){
  .about-gallery{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px;margin-top:64px;align-items:start}
}

/* ABOUTは写真・見出し・本文を1カラムで構成 */
.about-section{display:block}
.about-intro-photo{width:70%;margin:0 auto 48px}
.about-intro-photo picture,.about-intro-photo img{display:block;width:100%}
.about-intro-photo img{height:auto}
.about-section>.section-heading,.about-body{max-width:var(--text-width);margin-inline:auto}
.about-body{margin-top:40px}
.about-gallery-photo{margin:0}
.about-gallery-photo picture{aspect-ratio:3/2;overflow:hidden}
.about-gallery-photo img{height:100%;object-fit:cover;object-position:center}
@media(min-width:768px){.about-intro-photo{margin-bottom:64px}}

/* 会場の風景をゆっくり横に流す */
.memories-section{padding-bottom:80px;--photo-gap:16px;--photo-width:clamp(260px,72vw,480px)}
.memories-window{width:100%;overflow-x:auto}
.memories-track,.memories-group{display:flex;width:max-content}
.memories-group{flex:none;gap:var(--photo-gap);padding-right:var(--photo-gap)}
.memories-photo{flex:0 0 var(--photo-width);width:var(--photo-width)}
.memories-photo picture{display:block;aspect-ratio:3/2;overflow:hidden}
.memories-photo img{width:100%;height:100%;object-fit:cover}
.memories-section.is-animated .memories-window{overflow:hidden}
.memories-section.is-animated .memories-track{animation:memories-slide 100s linear infinite}
.memories-section.is-paused .memories-track,.memories-window:hover .memories-track,.memories-window:focus-within .memories-track{animation-play-state:paused}
.memories-caption{padding-top:32px;text-align:center}
.memories-caption p{font-size:16px;line-height:1.8;font-weight:400}
.memories-toggle{font-size:12px;margin-top:16px;min-height:44px;padding:8px 16px;text-decoration:underline;text-underline-offset:5px}
.memories-toggle[hidden]{display:none}
.site-footer .footer-bottom{margin-top:0}
@keyframes memories-slide{to{transform:translateX(-50%)}}
@media(min-width:768px){.memories-section{--photo-gap:24px;padding-bottom:120px}.memories-caption{padding-top:48px}}
@media(prefers-reduced-motion:reduce){
  .memories-section.is-animated .memories-window{overflow-x:auto}
  .memories-track{animation:none!important;transform:none!important}
  .memories-group[aria-hidden="true"]{display:none}
  .memories-toggle{display:none}
}

/* イラストに1行の日本語タイトルを重ねるMV */
.hero.has-photo{display:block;position:relative;background:#fff;color:var(--color-text);padding:0;height:141.4vw;min-height:560px;max-height:94svh}
.hero.has-photo::after{display:none}
.hero-media{position:absolute;inset:0;width:100%;height:100%}
.hero-media picture,.hero-media img{display:block;width:100%;height:100%}
.hero-media img{object-fit:contain;object-position:center bottom;min-height:0;max-height:none}
.hero-content{position:absolute;inset:0;z-index:1;width:100%;padding:0 20px;text-align:center;pointer-events:none}
.hero-kicker{position:absolute;top:88px;left:20px;right:20px;margin:0;font-size:12px}
.hero h1{position:absolute;top:118px;left:12px;right:12px;margin:0;font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;font-size:clamp(16px,4.6vw,58px);font-weight:700;line-height:1.5;letter-spacing:0;white-space:nowrap;text-shadow:none}
.hero-meta{position:absolute;bottom:18px;left:20px;right:20px;display:block;margin:0}
.hero-meta p:first-child{font-size:16px}
.hero-meta p:last-child{font-size:12px}
.hero .scroll-link{display:none}
@media(min-width:768px){
 .hero.has-photo{height:94svh;min-height:620px;max-height:1100px}
 .hero-media img{object-position:center}
 .hero-kicker{top:15%;font-size:14px}
 .hero h1{top:20%;left:32px;right:32px;font-size:clamp(30px,4.2vw,64px)}
 .hero-meta{bottom:30px}
 .hero-meta p:first-child{font-size:20px}
 .hero-meta p:last-child{font-size:14px}
}

/* 日本語のヘッダーロゴ */
.site-header{gap:12px}
.brand{font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;font-size:clamp(10px,2.8vw,14px);line-height:1.5;letter-spacing:0;white-space:nowrap;min-height:44px;display:flex;align-items:center}
.header-right{flex-shrink:0}
@media(min-width:768px){.brand{font-size:18px}}
/* 公開済みカテゴリーへのリンク */
.category>a{display:block;width:100%;text-align:left}
.category>a:hover .category-arrow{transform:translate(4px,-4px)}
.category>a:hover .category-photo img{transform:scale(1.03)}

/* 公式Instagramのアイコン付きリンク */
.instagram-link{gap:12px;min-height:44px}
.instagram-icon{flex-shrink:0;display:block}
.instagram-link>span{margin-left:16px}
