: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}
