:root{--ocean-img:url('https://www.franzandfriends.tw/images/content02.png');/* 在此填入原站首頁下方海洋景色圖網址，例如 url('https://www.franzandfriends.tw/images/ocean.jpg') */--fig:clamp(62px,15vw,190px);--navy:#06284a;--sea:#0a7fb5;--aqua:#35d0e0;--candy:#ff6fa5;--sun:#ffd23f;--bg:#f2fbff;--ink:#12324a;--r:22px}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;color:var(--ink);min-height:100vh;background:url("https://www.franzandfriends.tw/images/bg_reef.webp") center bottom/min(100%,1500px) auto no-repeat,linear-gradient(0deg,#010f2e 0,#02214f 360px,#02214f00 1100px),linear-gradient(180deg,#0a68bd 0,#0a58aa 800px,#06499c 1800px,#003885 3200px),#003885;line-height:1.85}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:1100px;margin:auto;padding:0 20px}
/* top bar */
.top{background:var(--navy);color:#fff;font-size:14px}
.top .wrap{display:flex;justify-content:flex-end;gap:18px;padding:8px 20px;flex-wrap:wrap}
.top a:hover{color:var(--sun)}
.top .soc{display:inline-flex;align-items:center;color:#fff}.top .soc:hover{color:var(--sun)}.top .wrap{align-items:center}
header{position:sticky;top:0;z-index:20;background:#fff;box-shadow:0 2px 12px #0a7fb533}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:68px}
header .logo img{height:52px;width:auto}
nav{display:flex;gap:6px}
nav a{padding:8px 16px;border-radius:99px;font-weight:700;transition:.2s}
nav a:hover,nav a.on{background:var(--sea);color:#fff}
nav a.buy{background:var(--candy);color:#fff}
#burger{display:none;background:none;border:0;font-size:30px;color:var(--sea);cursor:pointer}
/* hero */
.hero{background:var(--ocean-img) center bottom/cover no-repeat,linear-gradient(180deg,var(--navy),var(--sea) 60%,var(--aqua));color:#fff;text-align:center;padding:50px 0 0;position:relative;overflow:hidden;overflow-x:clip;overflow-y:visible}
.hero h1{font-size:clamp(28px,5vw,52px);text-shadow:0 4px 0 #0005}
.logo-h img{width:clamp(230px,46vw,520px);height:auto;margin:0 auto;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 6px #fff) drop-shadow(0 0 14px #ffffffe6) drop-shadow(0 0 28px #ffffffa6)}
.logo-h{position:relative;display:inline-block;max-width:100%}
.logo-h:before{content:"";position:absolute;left:50%;top:50%;width:96%;height:92%;transform:translate(-50%,-50%);background:radial-gradient(closest-side,#ffffffb8,#ffffff55 65%,#fff0);filter:blur(12px);z-index:-1;pointer-events:none}
.hero p{opacity:.9;margin-top:6px}
.cast{display:flex;align-items:flex-end;padding-bottom:6px;justify-content:center;gap:clamp(4px,2vw,24px);margin-top:30px;padding:0 10px}
.cast img{height:var(--fig);width:auto;max-width:17vw;object-fit:contain;filter:drop-shadow(0 8px 6px #0005);animation:bob 3s ease-in-out infinite}
.cast img:nth-child(2){animation-delay:.3s}.cast img:nth-child(3){animation-delay:.6s}.cast img:nth-child(4){animation-delay:.9s}.cast img:nth-child(5){animation-delay:1.2s}
.cast img.car{height:calc(var(--fig)*.8);max-width:24vw;animation:drive 4s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-14px)}}
@keyframes drive{50%{transform:translateX(10px) rotate(-2deg)}}
.wave{display:block;width:calc(100% + 4px);max-width:none;margin-left:-2px;height:50px;margin-top:-1px;margin-bottom:-4px;pointer-events:none;transform:translateY(3px)}
/* sections */
main section.page{display:none;padding:50px 0 70px}
main section.page.on{display:block;animation:fade .5s}
@keyframes fade{from{opacity:0;transform:translateY(12px)}}
h2.t{font-size:clamp(24px,4vw,36px);color:var(--sea);text-align:center;margin-bottom:8px}
.fish{margin:0 auto 26px;height:clamp(70px,11vw,120px);width:auto}
.card{background:#fff;border-radius:var(--r);padding:28px;box-shadow:0 8px 24px #0a7fb52b}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:18px;margin:10px 0 44px}
.tile{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;padding:26px 12px 30px;border-radius:30px 30px 44px 44px;color:#fff;font-weight:800;font-size:17px;line-height:1.35;text-align:center;overflow:hidden;isolation:isolate;
 background:radial-gradient(circle at 20% 15%,#ffffff40 0 6px,transparent 7px),radial-gradient(circle at 82% 30%,#ffffff33 0 4px,transparent 5px),linear-gradient(165deg,#3fd9e8,#0a86bf 52%,#06499c);
 border:2px solid #ffffff66;box-shadow:0 12px 26px #00183f8c,inset 0 2px 0 #ffffff77,inset 0 -12px 22px #0000003d;text-shadow:0 2px 0 #0a3a7a99;transition:transform .25s,box-shadow .25s}
.tile:before{content:"";position:absolute;left:-10%;right:-10%;top:-45%;height:70%;border-radius:50%;background:#ffffff26;z-index:-1}
.tile:after{content:"";position:absolute;left:0;right:0;bottom:0;height:18px;background:radial-gradient(circle at 11px 0,transparent 10px,#ffffff38 11px) 0 0/22px 18px repeat-x;pointer-events:none}
.tile .ic{display:grid;place-items:center;width:68px;height:68px;border-radius:50%;font-size:34px;line-height:1;background:radial-gradient(circle at 32% 26%,#fffffff2,#ffffff59 46%,#ffffff1f 72%);border:2px solid #ffffffa6;box-shadow:0 0 16px #ffffff66,inset 0 -6px 10px #0a86bf40;animation:bob 3.4s ease-in-out infinite}
.tile:nth-child(2) .ic{animation-delay:.4s}.tile:nth-child(3) .ic{animation-delay:.8s}.tile:nth-child(4) .ic{animation-delay:1.2s}.tile:nth-child(5) .ic{animation-delay:1.6s}
.tile:hover,.tile:focus-visible{transform:translateY(-8px) scale(1.03);box-shadow:0 18px 34px #00183fb3,0 0 24px #3fd9e8aa,inset 0 2px 0 #ffffff88}
.tile:hover .ic{animation:wig .6s ease-in-out infinite}
@keyframes wig{25%{transform:rotate(-10deg) scale(1.1)}75%{transform:rotate(10deg) scale(1.1)}}
.tile.buy{background:radial-gradient(circle at 20% 15%,#ffffff55 0 6px,transparent 7px),radial-gradient(circle at 82% 30%,#ffffff44 0 4px,transparent 5px),linear-gradient(165deg,#ffd23f,#ff9a6f 50%,#ff5f9b);text-shadow:0 2px 0 #b03a6a88}
.tile.buy:hover{box-shadow:0 18px 34px #00183fb3,0 0 26px #ffd23fcc,inset 0 2px 0 #ffffff88}
@media(max-width:620px){.tiles{grid-template-columns:repeat(2,1fr);gap:14px}.tile:last-child{grid-column:1/-1}.tile{font-size:16px;padding:22px 8px 28px}.tile .ic{width:58px;height:58px;font-size:29px}}
@media(prefers-reduced-motion:reduce){.tile .ic{animation:none}}
.news{display:grid;gap:16px;margin-bottom:40px}
.news a.n{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:center;background:#fff;border-radius:var(--r);padding:20px 24px;box-shadow:0 6px 16px #0a7fb52b;border-left:8px solid var(--sun)}
.news a.n img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px}.news b{display:block;color:var(--navy)}.news small{color:var(--sea);font-weight:700}
.carousel{position:relative;margin-top:20px}
.strip{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:6px 4px 16px;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--aqua) transparent}
.strip figure{flex:0 0 clamp(250px,31%,350px);scroll-snap-align:start;background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 6px 16px #0a7fb52b}
.strip img{width:100%;aspect-ratio:4/3;object-fit:cover}
.strip figcaption{padding:10px 12px;font-size:14px;font-weight:700;text-align:center;line-height:1.5}
.cbtn{position:absolute;top:42%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:0;background:var(--sea);color:#fff;font-size:28px;line-height:1;cursor:pointer;box-shadow:0 4px 12px #0005;z-index:2}
.cbtn:hover{background:var(--candy)}.cbtn.l{left:-8px}.cbtn.r{right:-8px}
@media(max-width:820px){.heroes{grid-template-columns:repeat(2,1fr);gap:12px}.hero-c img{height:170px}.say{font-size:13px;padding:10px 11px}.hero-c h3{font-size:17px}.strip figure{flex-basis:78%}.cbtn{width:38px;height:38px;font-size:24px}}
.gal{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.gal img{border-radius:var(--r);width:100%;aspect-ratio:4/3;object-fit:cover}
.sub{margin:36px 0 14px;font-size:22px;color:var(--navy)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center}
.heroes{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px}
.heroes{grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr}
.hero-c{position:relative;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:calc(var(--sayh,150px) + 62px) 10px 14px;border-radius:var(--r);cursor:pointer;color:#fff;text-align:center;outline-offset:3px;
 background:radial-gradient(circle at 18% 82%,#fff6 0 5px,transparent 6px),radial-gradient(circle at 82% 70%,#fff5 0 8px,transparent 9px),radial-gradient(circle at 70% 90%,#fff5 0 4px,transparent 5px),radial-gradient(circle at 30% 60%,#fff4 0 3px,transparent 4px),
  linear-gradient(180deg,#35d0e0b3,#0a7fb5cc 55%,#06284aeb),var(--ocean-img) center bottom/cover no-repeat,#0a7fb5;
 box-shadow:0 8px 20px #0a7fb54d;transition:box-shadow .25s}
.hero-c:hover,.hero-c:focus-visible{box-shadow:0 12px 28px #0a7fb59e}
.hero-c img{height:180px;width:auto;max-width:100%;object-fit:contain;margin:0 auto 8px;transform-origin:50% 100%;transition:transform .25s ease;filter:drop-shadow(0 6px 6px #0006)}
.hero-c:hover img,.hero-c:focus-visible img{transform:scale(1.15)}
.hero-c.talk img{animation:talk .6s ease 2}
@keyframes talk{50%{transform:scale(1.15) translateY(-8px)}}
.hero-c h3{color:var(--sun);text-shadow:0 2px 0 #0007;font-size:19px;line-height:1.35}
.hero-c:before{content:"💬";position:absolute;top:10px;right:12px;font-size:20px;opacity:.85;animation:ping 2s ease-in-out infinite}
.hero-c.talk:before{display:none}
@keyframes ping{50%{transform:scale(1.2)}}
.say{position:absolute;z-index:3;top:14px;left:12px;right:12px;background:#fff;color:var(--ink);border-radius:18px;padding:12px 14px;font-size:14.5px;line-height:1.65;text-align:left;box-shadow:0 6px 16px #0006;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px) scale(.92);transform-origin:50% 100%;transition:.25s}
.say:after{content:"";position:absolute;left:50%;bottom:-10px;margin-left:-10px;border:10px solid transparent;border-bottom:0;border-top-color:#fff}
.hero-c.talk .say{opacity:1;visibility:visible;pointer-events:auto;transform:none}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.92)}}
@media(max-width:1024px),(hover:none) and (pointer:coarse){.heroes{grid-template-columns:repeat(2,1fr);gap:12px}.hero-c{padding:calc(var(--sayh,150px) + 56px) 8px 12px}.hero-c img{height:150px}.hero-c h3{font-size:17px}
 .say{top:10px;left:8px;right:8px;font-size:12.5px;padding:9px 10px;line-height:1.6}}
.tl{list-style:none;border-left:4px solid var(--aqua);padding-left:20px}
.tl li{margin-bottom:12px;position:relative}
.tl li:before{content:"";position:absolute;left:-30px;top:10px;width:14px;height:14px;border-radius:50%;background:var(--candy)}
.tl b{color:var(--sea)}
.person{margin-top:20px}.person h3{color:var(--sea)}
.person p{margin-top:10px;text-align:justify}
.soon{text-align:center}.soon img{height:260px;margin:20px auto}
.soon h3{font-size:30px;color:var(--candy)}
.btn{display:inline-block;margin-top:20px;background:var(--candy);color:#fff;padding:12px 28px;border-radius:99px;font-weight:700}
footer{background:var(--navy);color:#cfe9f7;text-align:center;padding:30px 20px;font-size:14px}
footer .lang a{margin:0 8px;font-weight:700;color:var(--sun)}
.art h3.ttl{font-size:clamp(20px,3vw,28px);color:var(--navy);text-align:center;margin-bottom:20px}
.art p{margin-bottom:14px}.art .pic{margin:20px auto;border-radius:var(--r)}
.logos{display:flex;flex-wrap:wrap;gap:14px 30px;align-items:center;justify-content:center;margin-top:28px;padding:18px 24px;border-radius:20px;background:linear-gradient(135deg,#06284a,#0a5f95);border:1px solid #ffffff33;box-shadow:inset 0 1px 0 #ffffff33,0 8px 20px #06284a55;color:#fff;font-weight:700}
.logos span{display:flex;align-items:center;gap:10px}
.logos a{color:#fff;display:inline-flex;align-items:center;gap:8px}
.logos img{height:48px;width:auto}
.tour{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:20px 0}.tour div{background:var(--bg);border-left:6px solid var(--aqua);border-radius:14px;padding:14px 16px}.tour b{display:block;color:var(--sea);font-size:20px}
.back{text-align:center;margin-top:30px}.back a{display:inline-block;background:var(--sea);color:#fff;padding:10px 26px;border-radius:99px;font-weight:700}
.nl{list-style:none}.nl li{border-bottom:2px dashed #b9e6f3;padding:14px 4px}
.nl a:hover{color:var(--candy)}.nl small{color:var(--sea);font-weight:700;margin-right:12px}
.ph{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px}
.ph figure{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 6px 16px #0a7fb52b}
.ph img{width:100%;aspect-ratio:4/3;object-fit:cover}.ph figcaption{padding:14px 16px;font-weight:700;text-align:center}
@media(max-width:820px){
 .news a.n{grid-template-columns:110px 1fr;gap:12px;padding:14px}

 #burger{display:block}
 nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;flex-direction:column;padding:12px 20px;box-shadow:0 10px 16px #0003}
 nav.open{display:flex}
 .two{grid-template-columns:1fr}
}
.hero>*:not(.bubbles){position:relative;z-index:1}
.bubbles{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.bubbles i{position:absolute;left:var(--x);bottom:-40px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 30% 28%,#fff 0 12%,#ffffff55 30%,#ffffff1f 62%,#ffffff40 100%);border:1px solid #ffffff99;animation:rise var(--d) linear var(--dl) infinite}
@keyframes rise{0%{bottom:-40px;opacity:0;transform:translateX(0)}10%{opacity:.9}50%{transform:translateX(var(--sw))}90%{opacity:.7}100%{bottom:105%;opacity:0;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.bubbles i{animation:none;opacity:.5;bottom:30%}}
@media(max-width:820px){
 .logo-h img{width:min(88vw,460px)}
 .hero{padding-top:34px}
 .cast{flex-wrap:wrap;gap:10px 8px;margin-top:22px}
 .cast img{height:34vw;max-width:27vw}
 .cast img.car{height:26vw;max-width:34vw}
}
.pb{display:none;position:relative;overflow:hidden;color:#fff;padding:34px 16px 64px;isolation:isolate}
.pb.on{display:block}
.pb .in{position:relative;z-index:2;max-width:1100px;margin:auto;display:flex;align-items:flex-end;justify-content:center;gap:clamp(8px,3vw,44px);min-height:clamp(150px,22vw,230px)}
.pb h2{flex:0 1 auto;min-width:0;align-self:center;font-size:clamp(25px,5vw,52px);line-height:1.3;text-shadow:0 3px 0 #0006}
.pb img.f{flex:none;height:clamp(96px,17vw,200px);width:auto;max-width:27vw;object-fit:contain;filter:drop-shadow(0 8px 8px #0006);animation:bob 3s ease-in-out infinite}
.pb img.f:last-child{animation-delay:.6s}
.pb img.car{height:clamp(70px,13vw,150px);max-width:32vw;animation:drive 4s ease-in-out infinite}
.pb .w{position:absolute;left:-2px;bottom:-2px;width:calc(100% + 4px);height:40px;z-index:3;display:block;transform:translateY(3px)}
.pb .deco{position:absolute;inset:0;z-index:0;pointer-events:none}
.pb .sw{position:absolute;z-index:1;height:clamp(26px,5vw,52px);width:auto;opacity:.85;left:-12%;animation:swim var(--d) linear var(--dl) infinite;pointer-events:none}
@keyframes swim{to{left:112%}}
@keyframes beam{50%{opacity:.45}}
@keyframes twinkle{50%{opacity:.25}}
@keyframes slide{to{background-position:260% 0,0 0}}
@keyframes fall{to{background-position:0 120px,0 180px,0 240px}}
/* 3D theater: stage spotlights + film strip */
.pb-3d{background:linear-gradient(135deg,#1a0a4a,#4b1fa3 55%,#0a7fb5)}
.pb-3d .deco{background:repeating-conic-gradient(from 160deg at 50% -45%,#ffffff30 0 5deg,#fff0 5deg 20deg);animation:beam 5s ease-in-out infinite}
.pb-3d:before{content:"";position:absolute;left:0;right:0;top:0;height:12px;z-index:1;background:repeating-linear-gradient(90deg,#ffffffaa 0 12px,transparent 12px 26px)}
/* story: sunset sea + sun */
.pb-story{background:linear-gradient(180deg,#ffd23f 0%,#ff8fb1 52%,#35d0e0 100%);color:#06284a}
.pb-story h2{text-shadow:0 2px 0 #fffb}
.pb-story .deco{background:radial-gradient(circle at 84% 26%,#fffbd0 0 34px,#fff1a055 35px 80px,transparent 82px),radial-gradient(circle at 12% 70%,#ffffff55 0 40px,transparent 42px),radial-gradient(circle at 24% 62%,#ffffff44 0 28px,transparent 30px)}
/* team: blueprint grid + stars */
.pb-team{background:linear-gradient(#ffffff14 1px,transparent 1px) 0 0/28px 28px,linear-gradient(90deg,#ffffff14 1px,transparent 1px) 0 0/28px 28px,linear-gradient(160deg,#06284a,#0a5f95)}
.pb-team .deco{background:radial-gradient(circle at 10% 25%,#ffd23f 0 2px,transparent 3px),radial-gradient(circle at 30% 70%,#fff 0 2px,transparent 3px),radial-gradient(circle at 55% 20%,#fff 0 2px,transparent 3px),radial-gradient(circle at 75% 65%,#ffd23f 0 3px,transparent 4px),radial-gradient(circle at 92% 30%,#fff 0 2px,transparent 3px),radial-gradient(circle at 45% 85%,#35d0e0 0 2px,transparent 3px);animation:twinkle 3s ease-in-out infinite}
/* IMT: projector light + film frame */
.pb-imt{background:radial-gradient(circle at 80% 40%,#14a0c8,#052a4d 60%,#02101f)}
.pb-imt .deco{background:linear-gradient(100deg,transparent 40%,#ffffff26 50%,transparent 60%) -40% 0/60% 100% no-repeat,repeating-linear-gradient(0deg,#ffffff0d 0 2px,transparent 2px 6px);animation:slide 7s linear infinite}
.pb-imt .in{gap:clamp(18px,5vw,70px)}
.pb img.film{border:8px solid #111;border-radius:6px;outline:2px dashed #ffffffaa;outline-offset:-4px;box-shadow:0 12px 24px #0009;transform:rotate(3deg);height:clamp(100px,17vw,190px);max-width:44vw;object-fit:cover;filter:none;animation:none}
/* ticket: candy gradient + confetti + ticket frame */
.pb-tk{background:linear-gradient(120deg,#ff6fa5,#ff9a6f 60%,#ffd23f)}
.pb-tk .deco{background-image:radial-gradient(circle,#fff 0 3px,transparent 4px),radial-gradient(circle,#35d0e0 0 4px,transparent 5px),radial-gradient(circle,#7a3cff 0 3px,transparent 4px);background-size:60px 60px,90px 90px,120px 120px;background-position:0 0,20px 30px,50px 10px;animation:fall 8s linear infinite;opacity:.8}
.pb-tk h2 span{display:inline-block;padding:12px 22px;border:3px dashed #fff;border-radius:16px;background:#ffffff26}
@media(max-width:820px){.pb{padding:26px 10px 56px}.pb h2{font-size:clamp(22px,6.4vw,34px)}.pb img.f{height:clamp(84px,24vw,130px);max-width:26vw}.pb img.car{height:clamp(56px,16vw,90px)}}
@media(prefers-reduced-motion:reduce){.pb *,.pb .deco{animation:none!important}}
[id="3dtheater"]>.t,[id="3dtheater"]>.fish,[id="story"]>.t,[id="story"]>.fish,[id="team"]>.t,[id="team"]>.fish,[id="imt"]>.t,[id="imt"]>.fish,[id="ticket"]>.t,[id="ticket"]>.fish{display:none}
main section.page[id="3dtheater"],main section.page[id="story"],main section.page[id="team"],main section.page[id="imt"],main section.page[id="ticket"]{padding-top:34px}
/* ocean body theme */
.hero,.pb{-webkit-mask:linear-gradient(#000 0 0) 0 0/100% calc(100% - 38px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0 0V20Q150 0 300 20T600 20T900 20T1200 20V0Z'/%3E%3C/svg%3E") 0 100%/100% 40px no-repeat;mask:linear-gradient(#000 0 0) 0 0/100% calc(100% - 38px) no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0 0V20Q150 0 300 20T600 20T900 20T1200 20V0Z'/%3E%3C/svg%3E") 0 100%/100% 40px no-repeat}
.hero .wave,.pb .w{display:none}
.hero{padding-bottom:46px}
.page>h2.t{color:#fff;text-shadow:0 3px 0 #0007}
.page>h3,.page>h3.sub{color:#fff!important;text-shadow:0 2px 6px #0009}
.news>a:not(.n){color:var(--sun)!important}
footer{background:#020c2880;backdrop-filter:blur(2px);text-shadow:0 1px 3px #000a}
/* sea ambience */
body:before{content:"";position:fixed;inset:-10% -10% 0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(105deg,transparent 0 110px,#ffffff0d 110px 170px,transparent 170px 300px);-webkit-mask:linear-gradient(180deg,#000,#0000 75%);mask:linear-gradient(180deg,#000,#0000 75%);animation:rays 18s ease-in-out infinite alternate}
@keyframes rays{to{transform:translateX(90px)}}
body:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.85;background-image:radial-gradient(circle,#ffffff80 0 2px,transparent 3px),radial-gradient(circle,#ffffff55 0 3px,transparent 4px),radial-gradient(circle,#ffffff3d 0 5px,transparent 6px);background-size:140px 190px,230px 300px,330px 420px;background-position:0 0,60px 90px,120px 40px;animation:seaup 46s linear infinite}
@keyframes seaup{to{background-position:0 -190px,60px -210px,120px -380px}}
@media(max-width:820px){body{background-size:100% auto,auto,auto,auto}}
@media(prefers-reduced-motion:reduce){body:before,body:after{animation:none}}
.zone{background:linear-gradient(180deg,#06284ad9,#0a4f8ad1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #ffffff4d;border-radius:30px;padding:28px 24px 32px;box-shadow:0 16px 44px #00102ecc,inset 0 1px 0 #ffffff40;margin-top:10px}
.zone>h2.t{margin-top:0;color:#fff;text-shadow:0 3px 0 #0007}
@media(max-width:820px){.zone{padding:22px 12px 26px;border-radius:24px}}
/* photo: lagoon caustics + polaroids */
.pb-photo{background:linear-gradient(135deg,#0a8fa3,#19b8ae 55%,#f3c65a 135%)}
.pb-photo .deco{background:repeating-radial-gradient(circle at 18% 125%,#ffffff22 0 10px,transparent 10px 42px),repeating-radial-gradient(circle at 85% -20%,#ffffff1a 0 8px,transparent 8px 36px),radial-gradient(circle at 50% 30%,#fff3 0 2px,transparent 3px);animation:beam 4s ease-in-out infinite}
.pb img.pol{border:7px solid #fff;border-bottom-width:20px;border-radius:4px;box-shadow:0 12px 24px #0007;width:clamp(120px,22vw,250px);height:clamp(96px,16vw,190px);max-width:34vw;object-fit:cover;filter:none;animation:none}
.pb img.pol.l{transform:rotate(-5deg)}.pb img.pol.r{transform:rotate(4deg)}
/* news: night sea + lighthouse beam */
.pb-news{background:linear-gradient(180deg,#020b24,#0a2a6e 68%,#0a5f95)}
.pb-news .deco{background:radial-gradient(circle at 88% 26%,#fff6c8 0 22px,#fff6c855 23px 56px,transparent 58px),radial-gradient(circle at 12% 20%,#fff 0 2px,transparent 3px),radial-gradient(circle at 30% 45%,#fff 0 1.5px,transparent 2.5px),radial-gradient(circle at 62% 18%,#ffd23f 0 2px,transparent 3px),radial-gradient(circle at 74% 52%,#fff 0 1.5px,transparent 2.5px)}
.pb-news .deco:before{content:"";position:absolute;left:8%;top:58%;width:92%;height:70px;background:linear-gradient(90deg,#fff3b0cc,#fff3b000);clip-path:polygon(0 46%,100% 0,100% 100%,0 54%);transform-origin:0 50%;animation:swing 6s ease-in-out infinite alternate}
@keyframes swing{from{transform:rotate(-16deg)}to{transform:rotate(5deg)}}
.pb .ico{flex:none;align-self:center;font-size:clamp(46px,9vw,96px);line-height:1;filter:drop-shadow(0 8px 8px #0006);animation:bob 3s ease-in-out infinite}
.pb .ico:last-child{animation-delay:.7s}
[id="photo"]>.t,[id="photo"]>.fish,[id^="news"]>.t,[id^="news"]>.fish{display:none}
main section.page[id="photo"],main section.page[id^="news"]{padding-top:34px}
@media(max-width:820px){.pb img.pol{width:clamp(96px,30vw,150px);height:clamp(76px,22vw,112px);max-width:32vw}.pb .ico{font-size:clamp(38px,12vw,60px)}}
@media(max-width:820px){.logos{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px;padding:16px 18px}.logos span{width:100%;justify-content:flex-start;flex-wrap:nowrap;gap:8px;white-space:nowrap}.logos img{flex:0 1 auto;min-width:0;height:auto;max-height:44px;max-width:100%;object-fit:contain}.logos a{min-width:0;white-space:normal;flex-wrap:wrap}}
/* sea/family characters for photo + news banners */
.pb-sea .bubbles{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.pb-sea .bubbles i{position:absolute;left:var(--x);bottom:-30px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 30% 28%,#fff 0 12%,#ffffff55 30%,#ffffff1f 62%,#ffffff40 100%);border:1px solid #ffffff99;animation:rise var(--d) linear var(--dl) infinite}
.pb-sea .weed{position:absolute;bottom:-4px;z-index:1;height:clamp(70px,13vw,130px);width:auto;fill:#0b6e5acc;pointer-events:none;transform-origin:50% 100%;animation:sway 4.5s ease-in-out infinite alternate}
.pb-sea .wl{left:3%}.pb-sea .wr{right:3%;animation-delay:-2s;transform:scaleX(-1)}
.pb-sea .wl:after{content:""}
@keyframes sway{to{transform:rotate(5deg)}}
.pb-sea .wr{animation-name:sway2}@keyframes sway2{from{transform:scaleX(-1) rotate(0)}to{transform:scaleX(-1) rotate(5deg)}}
.pb .grp{flex:none;position:relative;display:flex;align-items:flex-end}
.pb .grp img.f{max-width:none;height:clamp(96px,17vw,200px)}
.pb .grp img.c2{height:clamp(76px,13.5vw,160px);margin-left:-9%}
.pb .grp.r img.c2{margin-left:0;margin-right:-9%;order:-1}
.pb .grp img.pol{height:clamp(86px,14.5vw,170px);width:clamp(112px,19vw,224px);max-width:none}
.pb .grp img.pol+img.c1{margin-left:-17%}
.pb .grp.r img.pol+img.c1{margin-left:-17%}
.pb-photo .grp.r img.pol{transform:rotate(4deg)}.pb-photo .grp img.pol{transform:rotate(-5deg)}
.pb .grp img.pol:first-child{z-index:0}
@media(max-width:820px){
 .pb .grp img.f{height:clamp(74px,22vw,120px)}
 .pb .grp img.c2{height:clamp(60px,17vw,96px)}
 .pb .grp img.pol{height:clamp(60px,17vw,96px);width:clamp(78px,23vw,128px)}
 .pb-sea h2{font-size:clamp(19px,5.6vw,30px)}
 .pb-sea .in{gap:6px}
 .pb-sea .weed{height:clamp(54px,14vw,90px)}
}
@media(prefers-reduced-motion:reduce){.pb-sea .bubbles i,.pb-sea .weed{animation:none!important}}
.pb-sea h2{white-space:nowrap}
@media(max-width:820px){.pb .grp img.pol{height:clamp(54px,15vw,90px);width:clamp(70px,20vw,120px)}.pb .grp img.f{height:clamp(70px,20vw,110px)}.pb .grp img.c2{height:clamp(56px,15vw,88px)}.pb-sea h2{font-size:clamp(17px,5vw,28px)}.pb-sea .in{gap:4px}.pb .grp img.pol+img.c1{margin-left:-22%}}
footer .fmenu{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 22px}
footer .fmenu a{font-weight:700;color:var(--sun);padding:4px 2px;transition:color .2s}
footer .fmenu a:hover{color:#fff}
footer .fmenu a.fb{display:inline-flex;align-items:center;color:#fff}
footer .fmenu a.fb:hover{color:var(--sun)}
#toTop{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:60;width:50px;height:50px;border-radius:50%;border:2px solid #ffffff88;background:radial-gradient(circle at 32% 26%,#7ae7f2,#0a86bf 60%,#06499c);color:#fff;cursor:pointer;display:grid;place-items:center;box-shadow:0 8px 20px #00183faa,inset 0 2px 0 #ffffff77;opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .3s,transform .3s,visibility .3s,box-shadow .2s}
#toTop.show{opacity:1;visibility:visible;transform:none}
#toTop.show:hover{transform:translateY(-4px);box-shadow:0 12px 26px #00183fcc,0 0 18px #3fd9e8aa,inset 0 2px 0 #ffffff88}
#toTop svg{display:block}
.pb .sw{height:clamp(78px,15vw,156px)}
footer .fmenu a.soc{display:inline-flex;align-items:center;color:#fff;padding:4px 0}
footer .fmenu a.soc:hover{color:var(--sun)}
footer .fmenu .sep{display:inline-block;width:1px;height:18px;background:#ffffff55}
@media(max-width:600px){footer .fmenu .sep{display:none}footer .fmenu{gap:8px 16px}}
@media(max-width:820px){footer{padding-bottom:78px}}
.art h4.tip{margin:22px 0 6px;color:var(--sea);font-size:19px}
/* reviews banner */
.pb-rev{background:linear-gradient(135deg,#2a0b5e,#8a1f7a 55%,#ff6fa5)}
.pb-rev .deco{background:radial-gradient(circle at 10% 25%,#ffd23f 0 3px,transparent 4px),radial-gradient(circle at 28% 70%,#fff 0 2px,transparent 3px),radial-gradient(circle at 50% 18%,#fff 0 3px,transparent 4px),radial-gradient(circle at 72% 62%,#ffd23f 0 3px,transparent 4px),radial-gradient(circle at 90% 28%,#fff 0 2px,transparent 3px),radial-gradient(circle at 45% 85%,#ffd23f 0 2px,transparent 3px),repeating-conic-gradient(from 160deg at 50% -45%,#ffffff22 0 5deg,#fff0 5deg 24deg);animation:twinkle 3s ease-in-out infinite}
.pb-rev .bubbles{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.pb-rev .bubbles i{position:absolute;left:var(--x);bottom:-30px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 30% 28%,#fff 0 12%,#ffffff55 30%,#ffffff1f 62%,#ffffff40 100%);border:1px solid #ffffff99;animation:rise var(--d) linear var(--dl) infinite}
.pb-rev img.f{filter:drop-shadow(0 0 16px #ff9ae6aa) drop-shadow(0 8px 8px #0006)}
.pb-rev h2{white-space:nowrap}
[id="reviews"]>.t,[id="reviews"]>.fish{display:none}
main section.page[id="reviews"]{padding-top:34px}
/* team / reviews content */
.phs{display:grid;gap:12px;margin-top:18px}
.phs img{width:100%;height:auto;border-radius:14px;box-shadow:0 6px 16px #0a7fb540;display:block}
.phs.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.phs.small{display:flex;flex-wrap:wrap;align-items:flex-end}
.phs.small img{width:auto;height:150px;max-width:100%}
.zone .phs:first-child{margin-top:0}
.mh{color:var(--sea);font-size:24px;margin-bottom:6px}
.member{border-left:6px solid var(--aqua);padding:4px 0 4px 16px;margin:20px 0}
.member h4{color:var(--sea);font-size:20px;margin-bottom:4px}.member h4 b{color:var(--navy)}
.qg{columns:2;column-gap:18px;margin-top:20px}
.q{break-inside:avoid;background:linear-gradient(160deg,#f2fbff,#dff1fa);border-radius:18px;padding:16px 20px 16px 46px;margin:0 0 16px;position:relative;line-height:1.8;font-size:15.5px;box-shadow:0 4px 12px #0a7fb52b}
.q:before{content:"\201C";position:absolute;left:12px;top:-2px;font:900 56px/1 Georgia,serif;color:var(--aqua)}
figure.m{margin:18px 0;padding:14px 18px 14px 22px;border-left:6px solid var(--candy);background:#f6fbff;border-radius:0 16px 16px 0}
figure.m blockquote{line-height:1.85}figure.m figcaption{margin-top:6px;text-align:right;color:var(--sea);font-weight:800}
@media(max-width:820px){.qg{columns:1}.phs.small img{height:110px}}
@media(max-width:620px){.phs.g2{grid-template-columns:1fr}}
/* 6 tiles */
.tiles{grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}
.tile:nth-child(6) .ic{animation-delay:2s}
@media(max-width:1024px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.tile:last-child{grid-column:auto}}
/* 7-item header */
@media(max-width:1240px){nav a{padding:8px 9px;font-size:15px}}
@media(max-width:1100px){#burger{display:block}nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;flex-direction:column;padding:12px 20px;box-shadow:0 10px 16px #0003}nav.open{display:flex}}
/* image protection only: text stays selectable */
img{-webkit-user-drag:none;user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}
nav a{white-space:nowrap}
header .wrap{gap:14px}header .logo{flex:none}
nav a{padding:8px 8px;font-size:14.5px}
.wl{margin:4px 0 14px 1.4em;line-height:1.9}

/* home news cards: image on top, text below (mobile only) */
@media(max-width:820px){
 .news a.n{grid-template-columns:1fr;gap:0;padding:0;overflow:hidden;border-left:0;border-top:6px solid var(--sun);align-items:stretch}
 .news a.n img{width:100%;aspect-ratio:16/9;height:auto;max-height:300px;object-fit:cover;border-radius:0;display:block}
 .news a.n>div{padding:14px 16px 18px}
}

/* image protection: decorative swimming fish in page banners must receive right-click / long-press
   (so the image guard in site.js applies); banner text and character images stay on top and clickable */
.pb .sw{pointer-events:auto}
a:has(img){-webkit-user-drag:none;user-drag:none}
a img{-webkit-touch-callout:none}
.pb .in,.pb .in *{pointer-events:none}
.pb .in img,.pb .in h1,.pb .in h2,.pb .in h3,.pb .in p,.pb .in a,.pb .in h1 *,.pb .in h2 *,.pb .in h3 *,.pb .in p *,.pb .in a *{pointer-events:auto}

/* ===== events page (演出活動) ===== */
/* 8-item header: header width is fixed (1100px) on desktop, so tighten at every desktop width; burger below 1181px */
@media(min-width:1181px){nav{gap:2px}nav a{padding:8px 8px;font-size:15px}}
@media(max-width:1180px){#burger{display:block}nav{display:none;position:absolute;top:68px;left:0;right:0;background:#fff;flex-direction:column;padding:12px 20px;box-shadow:0 10px 16px #0003}nav.open{display:flex}nav a{padding:10px 16px;font-size:16px}}
main section.page[id="events"]{padding-top:34px}
.pb-ev{background:linear-gradient(150deg,#003885,#0a7fb5 55%,#35d0e0)}
.pb-ev .deco{background:radial-gradient(circle at 8% 22%,#ffd23f 0 3px,transparent 4px),radial-gradient(circle at 24% 72%,#fff 0 2px,transparent 3px),radial-gradient(circle at 46% 14%,#ffd23f 0 2px,transparent 3px),radial-gradient(circle at 70% 66%,#fff 0 3px,transparent 4px),radial-gradient(circle at 92% 28%,#ff6fa5 0 3px,transparent 4px)}
.pb-ev .bubbles{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.pb-ev .bubbles i{position:absolute;left:var(--x);bottom:-30px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle at 30% 28%,#fff 0 12%,#ffffff55 30%,#ffffff1f 62%,#ffffff40 100%);border:1px solid #ffffff99;animation:rise var(--d) linear var(--dl) infinite}
.pb-ev h2{text-align:center;flex:none;white-space:nowrap}
.pb-ev{--evfig:clamp(84px,11vw,160px)}
/* like index: title on top, the five characters + candy car in one row below (same height, car 0.8x, never overlapping) */
.pb-ev .in{flex-wrap:wrap;gap:10px clamp(6px,1.6vw,20px)}
.pb-ev h2{order:-1;flex-basis:100%;margin-bottom:4px}
.pb-ev .grp{flex:0 1 auto;min-width:0;gap:clamp(6px,1.6vw,20px)}
.pb-ev .grp img.f{height:var(--evfig);width:auto;max-width:min(11vw,140px);min-width:0;margin:0;object-fit:contain}
.pb-ev .grp img.f:nth-child(2){animation-delay:.3s}
.pb-ev .grp img.f:nth-child(3){animation-delay:.6s}
.pb-ev .grp.r img.f:nth-child(1){animation-delay:.9s}
.pb-ev .grp.r img.f:nth-child(2){animation-delay:1.2s}
.pb-ev .grp img.car{height:calc(var(--evfig)*.8);max-width:min(16vw,210px);animation:drive 4s ease-in-out infinite}
/* menu item 演出活動: soft aqua pill + small pulsing "live" dot (no extra width) */
nav a[href$="events.html"]:not([hreflang]){position:relative;color:var(--sea);background:linear-gradient(135deg,#e6f9fd,#d2eefa);box-shadow:inset 0 0 0 2px #7fdbe8}
nav a[href$="events.html"]:not([hreflang])::after{content:"";position:absolute;top:1px;right:1px;width:9px;height:9px;border-radius:50%;background:var(--sun);box-shadow:0 0 0 2px #fff;animation:evdot 1.8s ease-in-out infinite;pointer-events:none}
nav a[href$="events.html"]:not([hreflang]):hover,nav a[href$="events.html"]:not([hreflang]).on{background:var(--sea);color:#fff;box-shadow:none}
footer .fmenu a[href$="events.html"]:not([hreflang]){position:relative;color:#fff;font-weight:800;padding:2px 12px;border:1.5px solid var(--sun);border-radius:99px;background:#ffd23f1f}
footer .fmenu a[href$="events.html"]:not([hreflang]):hover{background:var(--sun);color:var(--navy)}
footer .fmenu a[href$="events.html"]:not([hreflang])::after{content:"";position:absolute;top:-4px;right:-4px;width:8px;height:8px;border-radius:50%;background:var(--sun);box-shadow:0 0 0 2px var(--navy);animation:evdot 1.8s ease-in-out infinite;pointer-events:none}
@keyframes evdot{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.45);opacity:.55}}
@media(prefers-reduced-motion:reduce){nav a[href$="events.html"]:not([hreflang])::after,footer .fmenu a[href$="events.html"]:not([hreflang])::after{animation:none}}
.ev{position:relative}
.ev a{color:var(--sea);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.ev-tabs{position:sticky;top:76px;z-index:6;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:fit-content;max-width:100%;margin:0 auto 24px;padding:8px;background:#ffffffeb;border-radius:99px;box-shadow:0 6px 18px #0a7fb533;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ev .ev-tabs a{padding:7px 16px;border-radius:99px;font-weight:700;color:var(--sea);background:#e6f5fc;white-space:nowrap;transition:.2s;text-decoration:none}
.ev .ev-tabs a:hover{background:var(--sea);color:#fff}
.ev .ev-tabs a.hot{background:var(--candy);color:#fff}
.ev .ev-cta a{color:#fff;text-decoration:none}
.ev-sec{scroll-margin-top:150px;margin-bottom:26px;line-height:1.9}
.ev-sec>.mh{font-size:clamp(22px,3vw,28px);text-align:center;margin-bottom:18px}
.ev-sec>.mh:after{content:"";display:block;width:64px;height:5px;border-radius:9px;margin:8px auto 0;background:linear-gradient(90deg,var(--aqua),var(--candy))}
.ev h4{color:var(--navy);font-size:clamp(18px,2.4vw,21px);margin:32px 0 12px;padding-left:12px;border-left:6px solid var(--sun);line-height:1.4}
.ev h5{color:var(--sea);font-size:18px;margin:22px 0 8px;line-height:1.5}
.ev h6{color:var(--navy);font-size:16.5px;margin:4px 0 6px;line-height:1.5}
.ev p{margin-bottom:10px}
.ev-kv{margin:-6px 0 22px}
.ev-kv img{width:100%;height:auto;display:block;border-radius:16px;box-shadow:0 8px 22px #0a7fb540;background:#e6f5fc;min-height:120px}
.ev-hook{text-align:center;margin:10px 0 22px}
.ev-hook .big{font-size:clamp(22px,3.6vw,32px);font-weight:900;color:var(--sea);line-height:1.4}
.ev-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px}
.ev-chips span{background:linear-gradient(135deg,var(--aqua),var(--sea));color:#fff;padding:5px 14px;border-radius:99px;font-weight:700;font-size:15px}
.ev-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:12px;margin:20px 0}
.ev-facts>div{background:#f2fbff;border:2px solid #d6eef8;border-radius:16px;padding:12px 16px}
.ev-facts dt{font-size:13.5px;color:var(--sea);font-weight:800;letter-spacing:.03em}
.ev-facts dd{font-weight:700;color:var(--navy);line-height:1.6}
.ev-stars{list-style:none;display:grid;gap:6px;margin:18px 0}
.ev .hl{color:#e36c0a}
.ev-vid{position:relative;padding-top:56.25%;margin:24px 0;border-radius:14px;overflow:hidden;box-shadow:0 8px 22px #0a7fb540;background:#06284a}
.ev-vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ev .lead{font-size:18px;color:var(--navy)}
.ev-gal{display:grid;gap:14px;max-width:760px;margin:22px auto}
.ev-gal img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 6px 16px #0a7fb540;background:#e6f5fc;min-height:80px}
.ev-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:8px;margin:6px 0 16px}
.ev-list li{background:#f2fbff;border-radius:12px;padding:8px 14px;font-weight:700}
.ev-key{background:linear-gradient(135deg,#fff6d1,#ffe8f1);border-radius:16px;padding:14px 18px;font-weight:700;color:var(--navy)}
.ev-feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:14px;margin-top:8px}
.ev-feats>div{background:#f6fbff;border-radius:18px;padding:16px 18px;border-top:5px solid var(--aqua)}
.ev .qg{margin-top:10px}
.ev-links{line-height:2}
.ev-credits{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px 24px}
.ev-credits>div{padding:8px 0;border-bottom:1px dashed #cfe6f1}
.ev-credits dt{font-size:14px;color:var(--sea);font-weight:800}
.ev-credits dd{font-weight:700;color:var(--navy)}
.ev-org{background:#f6fbff;border-radius:18px;padding:18px 22px;margin-top:16px}
.ev-org h5{margin-top:0}
.ev-box{border:2px dashed #ff9ec2;border-radius:18px;padding:16px 20px;margin:16px 0;background:#fff8fb}
.ev-box h5{margin-top:0;color:#d6336c}
.ev-ul{list-style:none;display:grid;gap:8px;margin:6px 0 14px}
.ev-ul li{background:#fff;border-radius:12px;padding:10px 14px;box-shadow:0 2px 8px #ff6fa51f}
.ev-ul small{color:#47657a;font-size:14px}
.ev-badge{display:inline-block;margin-left:10px;padding:1px 12px;border-radius:99px;background:var(--candy);color:#fff;font-weight:900;font-size:15px;vertical-align:1px}
.ev-red{color:#d6336c;font-weight:800;margin-top:6px}
.ev-early{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.ev-early li{background:#fff;border:2px solid #ffd0e1;border-radius:99px;padding:4px 14px;font-weight:700}
.ev-note{list-style:none;display:grid;gap:6px;margin-top:10px}
.ev-note li{padding-left:1.4em;text-indent:-1.4em}
.ev-small{font-size:14px;color:#47657a}
.ev-sale{background:#f2fbff;border-radius:14px;padding:10px 16px}
.ev-prices{display:flex;flex-wrap:wrap;gap:8px}
.ev-prices span{border:2px solid var(--sea);color:var(--sea);border-radius:99px;padding:3px 14px;font-weight:800}
.ev-venues{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:12px 0 18px}
.ev-venue{display:flex;flex-direction:column;border-radius:18px;overflow:hidden;background:#fff;border:2px solid #d6eef8;box-shadow:0 4px 14px #0a7fb51f}
.ev-venue .city{background:linear-gradient(135deg,var(--sea),var(--aqua));color:#fff;font-weight:900;font-size:22px;padding:8px 16px;letter-spacing:.05em}
.ev-venue .b{padding:12px 16px 10px;flex:1}
.ev-venue .vn{font-weight:800;color:var(--navy);line-height:1.5;margin-bottom:4px}
.ev-venue .ad{font-size:14px;color:#47657a;line-height:1.6}
.ev-venue .ad a{white-space:nowrap}
.ev-venue ul{list-style:none;margin-top:8px}
.ev-venue li{font-weight:800;color:var(--navy);padding:7px 0;border-top:1px dashed #cfe6f1}
.ev-steps ol{padding-left:1.4em;display:grid;gap:6px}
.ev-cta{text-align:center;margin:26px 0 10px}
.ev-cta a{display:inline-block;color:#fff;font-size:clamp(18px,2.6vw,22px);font-weight:900;padding:16px 42px;border-radius:99px;background:radial-gradient(circle at 20% 15%,#ffffff55 0 6px,transparent 7px),linear-gradient(165deg,#ffd23f,#ff9a6f 50%,#ff5f9b);text-shadow:0 2px 0 #b03a6a88;box-shadow:0 12px 26px #ff5f9b55;transition:.2s}
.ev-cta a:hover{transform:translateY(-2px);box-shadow:0 16px 30px #ff5f9b77}
@media(max-width:820px){
 .ev-tabs{position:static;gap:6px;border-radius:18px;width:100%;padding:8px}
 .ev .ev-tabs a{padding:6px 11px;font-size:14.5px}
 .ev-sec{scroll-margin-top:84px;padding:20px 16px}
 .ev-org{padding:14px 16px}
 .ev-box{padding:14px 14px}
 .ev-feats{grid-template-columns:1fr}
 .ev-cta a{display:block;padding:14px 20px}
 .pb-ev .in{gap:10px 8px;min-height:0}
 .pb-ev h2{font-size:clamp(21px,6vw,30px)}
 .pb-ev .grp{flex-basis:100%;justify-content:center;gap:8px}
 .pb-ev{--evfig:clamp(84px,25vw,150px)}
 .pb-ev .grp img.f{max-width:27vw}
 .pb-ev .grp img.car{max-width:34vw}
}

/* ===== home popup: 演出活動 ===== */
.evpop[hidden]{display:none}
.evpop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;pointer-events:none}
.evpop-bg{position:absolute;inset:0;background:#021a33a8;opacity:0;transition:opacity .3s;pointer-events:auto}
.evpop.on .evpop-bg{opacity:1}
.evpop-card{position:relative;pointer-events:auto;width:min(540px,92vw);max-height:92vh;overflow:auto;background:#fff;border-radius:24px;box-shadow:0 24px 60px #00143080;opacity:0;transform:translateY(18px) scale(.96);transition:transform .35s cubic-bezier(.2,.9,.3,1.15),opacity .3s}
.evpop.on .evpop-card{opacity:1;transform:none}
.evpop-img{background:var(--navy)}
.evpop-img img{display:block;width:100%;height:auto;aspect-ratio:1486/1050;object-fit:cover}
.evpop.noimg .evpop-img{display:none}
.evpop-body{padding:18px 24px 0;text-align:center}
.evpop-tag{display:inline-block;background:var(--candy);color:#fff;font-weight:800;font-size:13px;padding:3px 12px;border-radius:99px;margin:0}
.evpop h2{color:var(--navy);font-size:clamp(20px,2.4vw,25px);line-height:1.35;margin:8px 0 4px}
.evpop-sub{color:var(--sea);font-weight:800;margin:0}
.evpop-meta{color:#47657a;font-size:15px;font-weight:700;margin:4px 0 0}
.evpop-btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:16px 24px 22px}
.evpop-btns a{flex:1 1 170px;padding:12px 18px;border-radius:99px;font-weight:900;text-decoration:none;text-align:center;transition:transform .15s,box-shadow .15s}
.evpop-btns a:hover{transform:translateY(-1px)}
.evpop-go{background:var(--sea);color:#fff;box-shadow:0 6px 14px #0a7fb544}
.evpop-buy{color:#fff;background:linear-gradient(165deg,#ffd23f,#ff9a6f 50%,#ff5f9b);box-shadow:0 6px 14px #ff5f9b55;text-shadow:0 1px 0 #b03a6a66}
.evpop-x{position:absolute;top:10px;right:10px;z-index:2;width:40px;height:40px;border:0;border-radius:50%;background:#ffffffeb;color:var(--navy);font-size:19px;font-weight:900;line-height:1;cursor:pointer;box-shadow:0 2px 10px #0003}
.evpop-x:hover{background:#fff;color:var(--candy)}
.evpop-x:focus-visible,.evpop-btns a:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
html.evpop-lock{overflow:hidden}
@media(max-width:820px){
 .evpop{align-items:flex-end}
 .evpop-bg{display:none}
 .evpop-card{width:100%;max-height:none;overflow:visible;display:grid;grid-template-columns:34% 1fr;align-items:stretch;border-radius:22px 22px 0 0;box-shadow:0 -10px 30px #00143059;opacity:1;transform:translateY(105%);padding-bottom:env(safe-area-inset-bottom,0px)}
 .evpop-img{grid-column:1;grid-row:1;display:flex;align-items:center;border-radius:22px 0 0 0;overflow:hidden}
 .evpop.noimg .evpop-card{grid-template-columns:1fr}
 .evpop-img img{aspect-ratio:auto;height:auto;object-fit:contain}
 .evpop-body{grid-column:2;grid-row:1;min-width:0;text-align:left;padding:12px 46px 6px 14px}
 .evpop.noimg .evpop-body{grid-column:1}
 .evpop-tag{font-size:12px;padding:2px 10px}
 .evpop h2{font-size:16.5px;margin:5px 0 2px}
 .evpop-sub{font-size:13px}
 .evpop-meta{font-size:12.5px}
 .evpop-btns{grid-column:1/-1;grid-row:2;flex-wrap:nowrap;gap:8px;padding:8px 12px 12px}
 .evpop-btns a{flex:1 1 0;min-width:0;padding:10px 8px;font-size:14px;white-space:nowrap}
 .evpop-x{top:8px;right:8px;width:34px;height:34px;font-size:16px}
}
@media(prefers-reduced-motion:reduce){.evpop-card,.evpop-bg{transition:none}}

/* ===== share buttons (events.html + tour2027.html) ===== */
.share-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:14px 0 4px}
.share-btns a,.share-btns button{display:inline-flex;align-items:center;gap:8px;font:inherit;font-weight:800;font-size:15.5px;padding:10px 20px;border-radius:99px;border:0;cursor:pointer;text-decoration:none!important;line-height:1.3}
.share-line{background:#06c755;color:#fff!important;box-shadow:0 6px 14px #06c75540}
.share-line .ln{background:#fff;color:#06c755;font-size:11.5px;font-weight:900;padding:2px 6px;border-radius:6px;letter-spacing:.02em}
.share-copy{background:#fff;color:var(--sea);box-shadow:inset 0 0 0 2px #9fd8ec}
.share-copy.done{background:var(--sea);color:#fff;box-shadow:none}
.ev-share{margin:24px 0 6px;padding:18px 16px;border-radius:18px;background:#e8f2f8;text-align:center}
.ev .ev-share>p{font-family:"Noto Serif TC","Songti TC","PMingLiU",Georgia,serif;font-weight:600;color:var(--navy);font-size:17px;line-height:1.6;margin:0;word-break:keep-all;overflow-wrap:anywhere}
html[lang="ja"] .ev .ev-share>p{font-family:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",Georgia,serif}
html[lang="en"] .ev .ev-share>p{font-family:"Noto Serif",Georgia,"Times New Roman",serif}
/* ===== EDM page (第 17 版：導覽版，一篇連續的文章) ===== */
body.edm-page{padding-bottom:84px}
.edm{max-width:680px;margin:0 auto;padding:0 14px 10px;--kv:url("https://www.franzandfriends.tw/images/event_2027_kv.jpg")}
.edm-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:8px 10px 8px 14px;border-radius:99px;background:#ffffffeb;box-shadow:0 6px 18px #0014302e}
.edm-logo{flex:0 1 auto;min-width:0}
.edm-logo img{height:40px;width:auto;max-width:100%;object-fit:contain;object-position:left center;display:block}
.edm-lang{display:flex;gap:2px;flex:0 0 auto}
.edm-lang a{color:var(--sea);font-weight:700;font-size:13px;padding:4px 8px;border-radius:99px;text-decoration:none;white-space:nowrap}
.edm-lang a.on{background:var(--sea);color:#fff}
.ed{--serif:"Noto Serif TC","Songti TC","PMingLiU",Georgia,serif;background-color:#ffffff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .32' numOctaves='2' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .25  0 0 0 0 .38  0 0 0 0 .5  0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23f%29'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .2  0 0 0 0 .32  0 0 0 0 .42  0 0 0 .085 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url%28%23g%29'/%3E%3C/svg%3E");background-size:360px 360px,220px 220px;color:#1d3446;border-radius:26px;overflow:hidden;box-shadow:0 20px 50px #00143066}
html[lang="ja"] .ed{--serif:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",Georgia,serif}
html[lang="en"] .ed{--serif:"Noto Serif",Georgia,"Times New Roman",serif}
.ed-kv{position:relative}
.ed-kv img{position:relative;z-index:1;display:block;width:100%;height:auto;aspect-ratio:auto 1486/1050;object-fit:contain;background:#06284a}   /* 主視覺依原始比例完整顯示，不裁切（下緣的城市場次文字必須完整） */
.ed-kv-fade{position:relative;height:clamp(46px,9vw,72px);overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,#000 0,rgba(0,0,0,.55) 45%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0,rgba(0,0,0,.55) 45%,transparent 100%)}
.ed-kv-fade:before{content:"";position:absolute;left:-30px;right:-30px;top:-10px;height:420px;background:var(--kv) center top/calc(100% + 60px) auto no-repeat;transform:scaleY(-1);transform-origin:center 10px;filter:blur(18px) saturate(1.05)}
.ed-cover{padding:0;text-align:center}
.ed .ed-kicker{word-break:keep-all;overflow-wrap:anywhere;margin:24px 16px 0;font-family:var(--serif);color:var(--sea);font-weight:700;font-size:22px;letter-spacing:.04em;line-height:1.5}
@media(max-width:699px){.ed .ed-kicker{font-size:clamp(17px,4.7vw,18px)}}
.ed h1{font-family:var(--serif);font-weight:700;color:var(--navy);font-size:clamp(30px,10vw,56px);line-height:1.25;margin:8px 16px 0;letter-spacing:.05em;white-space:nowrap}
html[lang="en"] .ed h1{font-size:clamp(25px,8vw,52px);letter-spacing:.02em}
html[lang="ja"] .ed h1{font-size:clamp(25px,7.8vw,50px);letter-spacing:.03em}
.ed .ed-dek{max-width:34em;line-break:strict;margin:16px auto 0;padding:0 26px;font-size:16.5px;line-height:1.95;color:#47657a}
.ed-s{padding:14px clamp(22px,6vw,44px) 4px;margin-top:13px;border-top:1px solid #d9e7ef}
.ed-s>:last-child{margin-bottom:0!important}
.ed-s:last-child{padding-bottom:30px}
.ed-no{margin:0!important;font-family:var(--serif);color:var(--aqua);font-size:15px!important;letter-spacing:.2em;line-height:1.4!important}
.ed h2{font-family:var(--serif);font-weight:700;color:var(--navy);font-size:clamp(22px,5.6vw,28px);line-height:1.4;margin:4px 0 14px;word-break:keep-all;overflow-wrap:anywhere}
.ed p{font-size:16.5px;line-height:2.05;margin:0 0 12px}
html[lang="en"] .ed p{line-height:1.85}
.ed em{font-style:normal;font-family:var(--serif);color:var(--sea);font-weight:700}
.ed-q{margin:20px 0 10px;padding:4px 0 4px 18px;border-left:3px solid var(--aqua)}
.ed-q p{font-family:var(--serif);font-weight:600;color:var(--navy);font-size:18px;line-height:1.85;margin:0}
.ed-q cite{display:block;margin-top:6px;font-style:normal;color:#6b8596;font-size:13.5px}
.ed-q cite:before{content:"— "}
.ed-cast{display:flex;justify-content:center;align-items:flex-end;gap:clamp(4px,1.8vw,14px);margin:6px 0 18px}
.ed-cast figure{margin:0;flex:0 1 auto;min-width:0;text-align:center}
.ed-cast img{display:block;height:clamp(64px,15vw,100px);width:auto;max-width:100%;margin:0 auto;object-fit:contain;filter:drop-shadow(0 5px 6px #0014302e)}
.ed-cast .car img{height:calc(clamp(64px,15vw,100px)*.8)}
.ed-cast figcaption{margin-top:6px;font-size:12.5px;color:#6b8596;line-height:1.3;word-break:keep-all}
.ed-ph{display:grid;gap:12px;margin:18px 0 8px}
.ed-ph.n2{grid-template-columns:1fr 1fr}
.ed-ph figure{margin:0}
.ed-ph img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:#dfeef5}
.ed-ph.n1 img{aspect-ratio:16/9}
.ed-ph figcaption{margin-top:6px;font-size:12.5px;line-height:1.55;color:#6b8596}
.ed-qa{display:block;color:inherit;text-decoration:none!important}
.ed-qa .go{display:inline-block;margin-left:10px;color:var(--sea);font-weight:700;white-space:nowrap}
.ed-qa:hover .go{text-decoration:underline;text-underline-offset:3px}
.ed-qa:hover p{color:var(--sea)}
.ed .ed-tour-t{margin:18px 0 0;font-family:var(--serif);font-weight:700;color:var(--sea);font-size:16px;letter-spacing:.06em;line-height:1.5}
.ed-tour{list-style:none;margin:8px 0 4px;padding:0;border-top:1px solid #d9e7ef}
.ed-tour li{display:grid;grid-template-columns:5.5em 1fr auto;gap:4px 14px;align-items:baseline;padding:10px 0;border-bottom:1px solid #d9e7ef;font-size:15px}
.ed-tour b{font-family:var(--serif);color:var(--navy);font-size:17px}
.ed-tour span:nth-of-type(1){color:#47657a}
.ed-tour span:nth-of-type(2){font-weight:700;color:var(--navy);white-space:nowrap}
.ed-time{color:#6b8596;font-size:14px!important;margin-top:8px!important}
.ed-more{margin:6px 0 0!important}
.ed-more a{color:var(--sea);font-weight:800;text-decoration:underline;text-underline-offset:4px}
.ed-share{margin:26px 0 30px;padding:18px 16px;border-radius:18px;background:#e8f2f8;text-align:center}
.ed-share>p{font-family:var(--serif);font-weight:600;color:var(--navy);font-size:17px!important;margin:0!important;line-height:1.6!important;word-break:keep-all;overflow-wrap:anywhere}
.ed-dek br.pc{display:none}
@media(min-width:700px){.ed-dek br.pc{display:inline}}
@media(min-width:700px){.ed-dek .nw{white-space:nowrap}}   /* 手機版不刻意分行：自然換行 */
.edm-foot{text-align:center;color:#cfe9f7;font-size:13px;padding:14px 0 20px;text-shadow:0 1px 3px #000a}
.edm-sticky{position:fixed;left:50%;bottom:calc(12px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:900;width:min(92vw,440px);height:56.5px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 18px;white-space:nowrap;border-radius:99px;text-align:center;color:#fff!important;font-weight:800;font-size:19px;letter-spacing:.03em;text-decoration:none!important;background:radial-gradient(circle at 20% 15%,#ffffff55 0 6px,transparent 7px),linear-gradient(165deg,#ffd23f,#ff9a6f 50%,#ff5f9b);text-shadow:0 2px 0 #b03a6a88;box-shadow:0 12px 26px #ff5f9b55;transition:transform .2s,box-shadow .2s}
.edm-sticky:hover{transform:translateX(-50%) translateY(-2px);box-shadow:0 16px 30px #ff5f9b77}
@media(max-width:699px){
 .edm-sticky{width:max-content;max-width:96vw;font-size:clamp(16.5px,5vw,19px);padding:0 34px}
 html[lang="en"] .edm-sticky{padding:0 30px}
 html[lang="ja"] .edm-sticky{padding:0 clamp(14px,6.4vw,25px)}
}
@media(max-width:560px){
 .ed-ph.n2{gap:8px}
 .ed-ph figcaption{font-size:12px}
 .ed-tour li{grid-template-columns:4.2em 1fr;font-size:14.5px}
 html[lang="en"] .ed-tour li{grid-template-columns:5.8em 1fr}
 .ed-tour span:nth-of-type(2){grid-column:2;white-space:normal}
 .ed-cast figcaption{font-size:11px}
}
@media(max-width:420px){.share-btns a,.share-btns button{font-size:14.5px;padding:9px 16px}.ed p{font-size:16px}}

/* ===== photo viewer (lightbox) ===== */
img.zoomable{cursor:zoom-in}
img.zoomable:focus-visible{outline:3px solid var(--sun);outline-offset:3px}
html.lb-lock{overflow:hidden}
.lb[hidden]{display:none}
.lb{position:fixed;inset:0;z-index:2000;background:#020f1ef2;opacity:0;transition:opacity .2s;display:flex;flex-direction:column}
.lb.on{opacity:1}
.lb-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;padding:56px 64px 8px}
.lb-img{max-width:none;max-height:none;width:auto;height:auto;flex:0 0 auto;opacity:0;object-fit:contain;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:zoom-in;will-change:transform;border-radius:6px;box-shadow:0 10px 40px #0008}
.lb-img.ready{opacity:1}
.lb.zoomed .lb-img{cursor:zoom-out}
.lb-bar{flex:0 0 auto;display:flex;align-items:baseline;justify-content:center;gap:14px;padding:10px 20px calc(16px + env(safe-area-inset-bottom,0px));color:#e6f3fb;text-align:center}
.lb-cap{margin:0;font-size:15px;line-height:1.6;max-width:46em}
.lb-count{font-size:13px;color:#9fc3d8;white-space:nowrap}
.lb-x,.lb-nav{position:absolute;z-index:2;border:0;cursor:pointer;color:#fff;background:#ffffff1f;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .15s}
.lb-x:hover,.lb-nav:hover{background:#ffffff38}
.lb-x:focus-visible,.lb-nav:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.lb-x{top:calc(10px + env(safe-area-inset-top,0px));right:12px;width:44px;height:44px;font-size:20px}
.lb-nav{top:50%;transform:translateY(-50%);width:48px;height:48px;font-size:34px;line-height:1;padding-bottom:4px}
.lb-prev{left:10px}.lb-next{right:10px}
.lb-nav[hidden],.lb-count[hidden]{display:none}
.lb.zoomed .lb-nav{opacity:.25}
@media(max-width:700px){.lb-stage{padding:52px 8px 6px}.lb-nav{width:40px;height:40px;font-size:28px;top:auto;bottom:calc(64px + env(safe-area-inset-bottom,0px));transform:none;background:#ffffff26}.lb-cap{font-size:14px}}
@media(prefers-reduced-motion:reduce){.lb,.lb-img{transition:none!important}}

/* ===== news article: previous / next / back to list (第 32 版) ===== */
.nn{margin:30px 0 6px;padding-top:22px;border-top:1px dashed #cfe6f1}
.nn-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.nn-c{display:flex;flex-direction:column;gap:3px;padding:14px 18px;border-radius:16px;background:#f2fbff;border:2px solid #d6eef8;text-decoration:none!important;color:var(--navy);transition:background .15s,border-color .15s,transform .15s;min-width:0}
a.nn-c:hover{background:#e3f5fc;border-color:var(--aqua);transform:translateY(-1px)}
a.nn-c:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.nn-next{text-align:right;align-items:flex-end}
.nn-k{font-weight:900;color:var(--sea);font-size:15px}
.nn-d{font-size:13px;color:#6b8596;font-weight:700}
.nn-t{font-weight:700;line-height:1.55;font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nn-empty{visibility:hidden;border:0;background:none;padding:0}
.nn-back{text-align:center;margin:16px 0 0}
.nn-back a{color:var(--sea);font-weight:800;font-size:14.5px;text-decoration:underline;text-underline-offset:4px}
@media(max-width:600px){.nn-row{grid-template-columns:1fr}.nn-next{text-align:left;align-items:flex-start}.nn-empty{display:none}}
