/* A shared navigation and motion layer for the three Our Adventures chapters. */
:root{--family-green:#20342b;--family-green-deep:#172820;--family-gold:#efbd48;--family-cream:#f8f6ef;--family-ink:#1d2922;--family-muted:#526158;--family-line:#e1ded4}
html{scroll-padding-top:105px}
body.family-site{color:var(--family-ink);-webkit-font-smoothing:antialiased}
body.family-site.admin-bar .family-header{top:32px}
.family-wrap{width:min(1120px,calc(100% - 48px));margin-inline:auto}
.family-skip{position:fixed;left:-9999px;top:0;z-index:2000;padding:12px 18px;background:#fff;color:#111}
.family-skip:focus{left:12px}
.family-header{position:fixed;inset:0 0 auto;z-index:100;background:linear-gradient(180deg,rgba(15,29,22,.92),rgba(15,29,22,.65));color:#fff;transition:background-color .5s ease,color .5s ease,box-shadow .5s ease}
.family-inner .family-header{background:var(--family-green)}
.family-header.is-scrolled{background:#fff;color:var(--family-ink);box-shadow:0 3px 18px #0d20141a}
.family-header-inner{width:min(1290px,calc(100% - 56px));height:100px;margin:auto;display:flex;align-items:center;gap:clamp(18px,2.5vw,42px);transition:height .55s cubic-bezier(.19,1,.22,1)}
.family-header.is-scrolled .family-header-inner{height:77px}
.family-brand{display:flex;align-items:center;gap:10px;flex:none;text-decoration:none;color:inherit;min-width:0}
.family-brand img{width:72px;height:72px;object-fit:cover;border-radius:50%;box-shadow:0 4px 18px #0002;transition:width .55s cubic-bezier(.19,1,.22,1),height .55s cubic-bezier(.19,1,.22,1)}
.family-header.is-scrolled .family-brand img{width:54px;height:54px}
.family-brand>span{font-size:14px;font-weight:850;letter-spacing:.06em;line-height:1.2;white-space:nowrap}
.family-brand small{display:block;margin-top:5px;font-size:8px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;white-space:normal;max-width:190px;opacity:.86}
.family-nav{margin-left:auto;height:100%;display:flex;align-items:center}
.family-nav>ul,.family-submenu{list-style:none;margin:0;padding:0}
.family-nav>ul{display:flex;align-items:center;gap:clamp(13px,2.3vw,32px);height:100%}
.family-nav li{position:relative;margin:0;padding:0}
.family-nav-heading{display:flex;align-items:center;gap:2px}
.family-nav-heading>a{display:flex;align-items:center;min-height:48px;color:inherit;text-decoration:none;font-size:14px;font-weight:650;white-space:nowrap;transition:color .25s}
.family-nav-heading>a:hover,.family-nav-heading>a:focus-visible{color:var(--family-gold)}
.family-submenu-toggle{width:24px;height:40px;padding:0;border:0;background:none;color:inherit;cursor:pointer}
.family-submenu-toggle:after{content:"";display:block;width:7px;height:7px;margin:auto;border-right:2px solid;border-bottom:2px solid;transform:translateY(-2px) rotate(45deg);transition:transform .25s}
.family-nav li.is-open .family-submenu-toggle:after{transform:translateY(2px) rotate(225deg)}
.family-submenu{display:none;position:absolute;top:100%;left:-17px;min-width:245px;padding:12px 0;background:var(--family-green);color:#fff;border-top:3px solid var(--family-gold);border-radius:0 0 7px 7px;box-shadow:0 18px 32px #07191155}
.family-nav li:hover>.family-submenu,.family-nav li:focus-within>.family-submenu,.family-nav li.is-open>.family-submenu{display:block}
.family-submenu a{display:block;padding:11px 18px;color:#fff!important;text-decoration:none;font-size:13px;line-height:1.35;white-space:normal}
.family-submenu a:hover,.family-submenu a:focus-visible{background:#ffffff17;color:var(--family-gold)!important}
.family-header-cta,.family-button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;padding:10px 17px;background:var(--family-gold);border-radius:3px;color:#18251e!important;text-decoration:none!important;text-align:center;font-size:12px;font-weight:800;line-height:1.2;letter-spacing:.02em;white-space:nowrap;transition:transform .3s,background .3s,box-shadow .3s}
.family-header-cta:hover,.family-button:hover{background:#ffd16a;transform:translateY(-3px);box-shadow:0 10px 22px #0002}
.family-menu-toggle{display:none;width:43px;height:43px;padding:8px;border:0;background:none;color:inherit;cursor:pointer}
.family-menu-toggle span{display:block;width:100%;height:2px;margin:5px 0;background:currentColor;transition:transform .25s,opacity .25s}
.family-header.is-scrolled .family-header-cta{min-height:42px}
.family-home #main{scroll-margin-top:90px}
.family-home .hero,.family-home .hero-shell{scroll-margin-top:90px}
.family-group .hero{padding-top:max(145px,9vw)}
.family-shanghai .hero-shell{padding-top:102px}
.family-group .hero-visual,.family-shanghai .hero-art{will-change:auto}
.family-home section[id],.family-home div[id]{scroll-margin-top:95px}
.family-home .hero-copy h1,.family-home .hero h1{letter-spacing:-.045em}
.family-home .button{transition:transform .3s ease,background .3s ease,box-shadow .3s ease}
.family-home .button:hover{transform:translateY(-3px);box-shadow:0 9px 20px #0002}
.family-home .chapter-image img,.family-home .card figure img{transition:transform .85s cubic-bezier(.19,1,.22,1)}
.family-home .chapter:hover .chapter-image img,.family-home .card:hover figure img{transform:scale(1.035)}
.family-home .reveal{opacity:1;transform:none}
.motion-ready .family-home .reveal{opacity:0;transform:translate3d(0,16px,0);transition:opacity .8s cubic-bezier(.19,1,.22,1),transform .8s cubic-bezier(.19,1,.22,1)}
.motion-ready .family-home .reveal.is-visible{opacity:1;transform:none}
.family-page-hero{padding:205px 0 90px;background:linear-gradient(100deg,rgba(21,40,29,.92),rgba(32,57,40,.58)),url('assets/family-page.webp') center/cover;color:#fff}
.family-shanghai .family-page-hero{background:linear-gradient(100deg,rgba(16,38,75,.92),rgba(27,58,114,.55)),url('assets/family-page.webp') center/cover}
.family-page-hero h1{max-width:850px;margin:0 0 18px;font-size:clamp(48px,7vw,92px);letter-spacing:-.05em;line-height:1.02}
.family-page-hero p:last-child{max-width:600px;font-size:18px;opacity:.9}
.family-eyebrow{margin:0 0 17px;text-transform:uppercase;letter-spacing:.16em;font-weight:800;font-size:11px}
.family-page-hero .family-eyebrow{color:var(--family-gold)}
.family-page-content{min-height:40vh;padding-block:75px 100px}
.family-article{max-width:850px;margin:auto}
.family-prose{font-size:17px;line-height:1.8}
.family-prose h2{margin:46px 0 16px;font-size:clamp(28px,4vw,43px);line-height:1.15;letter-spacing:-.035em}
.family-prose h3{margin:34px 0 12px;font-size:24px}
.family-prose p{margin:0 0 22px}
.family-prose ul{padding-left:24px}
.family-prose a,.family-inline-link{color:#a15d11;text-decoration:underline;text-underline-offset:4px}
.family-prose details{padding:19px 0;border-bottom:1px solid var(--family-line)}
.family-prose details:first-of-type{border-top:1px solid var(--family-line)}
.family-prose summary{font-weight:780;cursor:pointer}
.family-prose details p{padding-top:14px;margin-bottom:4px}
.family-post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.family-post-card{background:#fff;border:1px solid var(--family-line);box-shadow:0 10px 30px #1125190d}
.family-post-card img{aspect-ratio:4/3;width:100%;object-fit:cover}
.family-post-card>div{padding:24px}
.family-post-card h2{font-size:25px;line-height:1.2;letter-spacing:-.03em}
.family-post-card h2 a{color:inherit;text-decoration:none}
.family-post-card .family-eyebrow{color:#a15d11}
.family-empty{padding:35px 0}
.family-page-cta{padding:95px 0;background:var(--family-gold);text-align:center}
.family-page-cta h2{font-size:clamp(38px,5vw,70px);line-height:1.1;letter-spacing:-.04em}
.family-page-cta .family-button{background:var(--family-green);color:#fff!important}
.family-footer{background:var(--family-green-deep);color:#f5f2e9;padding:70px 0 0}
.family-footer-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:42px}
.family-footer-logo{display:block;width:82px;height:82px;object-fit:cover;border-radius:50%;margin:0 0 15px}
.family-footer strong{display:block;font-size:17px}
.family-footer h2{margin:0 0 17px;font-size:13px;text-transform:uppercase;letter-spacing:.13em;color:var(--family-gold)}
.family-footer p{margin:7px 0;color:#d2ded3;font-size:13px;line-height:1.5}
.family-footer a{display:block;margin:0 0 10px;color:#f5f2e9;text-decoration:none;font-size:13px}
.family-footer a:hover{text-decoration:underline;text-underline-offset:4px}
.family-footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:55px;padding:21px 0;border-top:1px solid #ffffff29;color:#c4d2c7;font-size:12px}
.family-faq-section{padding:90px 0;background:var(--family-cream);color:var(--family-ink)}
.family-faq-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:8%;align-items:start}
.family-faq-intro{position:sticky;top:120px}
.family-faq-intro h2{font-size:clamp(36px,4.5vw,60px);line-height:1.05;letter-spacing:-.045em;margin:0 0 20px}
.family-faq-intro p:not(.family-eyebrow){max-width:360px;color:var(--family-muted);line-height:1.7}
.family-faq-intro>a{font-weight:700;text-underline-offset:5px;color:var(--family-green)}
.family-faq-list details,.family-prose details{border-bottom:1px solid var(--family-line);padding:0;background:transparent}
.family-faq-list details:first-child,.family-prose details:first-of-type{border-top:1px solid var(--family-line)}
.family-faq-list summary,.family-prose summary{list-style:none;position:relative;padding:23px 38px 23px 0;font-size:17px;font-weight:700;line-height:1.45;cursor:pointer}
.family-faq-list summary::-webkit-details-marker,.family-prose summary::-webkit-details-marker{display:none}
.family-faq-list summary:after,.family-prose summary:after{content:'+';position:absolute;right:0;top:18px;font-size:28px;font-weight:400;color:var(--family-gold)}
.family-faq-list details[open] summary:after,.family-prose details[open] summary:after{content:'−'}
.family-faq-list details p,.family-prose details p{margin:0 35px 23px 0;line-height:1.75;color:var(--family-muted)}
.family-group .questions .faq details,.family-shanghai #questions .faq details{border-bottom:1px solid var(--family-line);padding:0}
.family-group .questions .faq details:first-child,.family-shanghai #questions .faq details:first-of-type{border-top:1px solid var(--family-line)}
.family-group .questions .faq summary,.family-shanghai #questions .faq summary{position:relative;list-style:none;padding:23px 38px 23px 0;font-size:17px;font-weight:700;line-height:1.45;cursor:pointer}
.family-group .questions .faq summary:after,.family-shanghai #questions .faq summary:after{content:'+';position:absolute;right:0;top:18px;font-size:28px;font-weight:400;color:var(--family-gold)}
.family-group .questions .faq details[open] summary:after,.family-shanghai #questions .faq details[open] summary:after{content:'−'}
.family-group .questions .faq details p,.family-shanghai #questions .faq details p{margin:0 35px 23px 0;line-height:1.75;color:var(--family-muted)}
@media(max-width:760px){.family-faq-section{padding:60px 0}.family-faq-layout{display:block}.family-faq-intro{position:static;margin-bottom:30px}}
.family-form-section{margin-top:64px;padding:38px;background:var(--family-cream);border:1px solid var(--family-line);border-radius:8px}
.family-form-intro h2{font-size:clamp(32px,4vw,46px);margin:0 0 13px;line-height:1.1}
.family-form-intro p:last-child{color:var(--family-muted);max-width:620px}
.family-contact-form{margin-top:28px}
.family-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.family-contact-form label{display:block;margin:0 0 20px;font-size:14px;font-weight:750;color:var(--family-ink)}
.family-contact-form label span{color:#9f4d0a}
.family-contact-form input:not([type=hidden]),.family-contact-form textarea{display:block;width:100%;margin-top:9px;padding:13px 14px;border:1px solid #aeb9ac;border-radius:4px;background:#fff;color:var(--family-ink);font:inherit;font-size:16px;line-height:1.4}
.family-contact-form input:focus,.family-contact-form textarea:focus{outline:3px solid var(--family-gold);outline-offset:2px}
.family-contact-form textarea{min-height:155px;resize:vertical}
.family-form-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:7px}
.family-form-footer p{margin:0;color:var(--family-muted);font-size:13px;line-height:1.5}
.family-form-footer button{border:0;cursor:pointer;font-family:inherit}
.family-form-message{padding:14px 18px;margin:20px 0;border-radius:4px;font-weight:700}
.family-form-success{background:#e3f2e6;color:#164325}
.family-form-error{background:#fff0e8;color:#8b2e17}
.family-form-trap{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
@media(max-width:640px){.family-form-section{padding:24px 18px;margin-top:40px}.family-form-grid{grid-template-columns:1fr;gap:0}.family-form-footer{display:block}.family-form-footer button{width:100%;margin-top:18px}}
html.page-transition-ready body::after{content:"";position:fixed;inset:0;z-index:2147483647;background:var(--family-cream) var(--family-transition-logo) center/112px 112px no-repeat;pointer-events:none;transform:translate3d(0,0,0);transition:transform .96s cubic-bezier(.76,0,.24,1)}
html.page-transition-ready.page-entered body::after{transform:translate3d(0,101%,0)}
html.page-transition-ready.page-restoring body::after{transition:none}
html.page-transition-ready:not(.page-entered) body::after{animation:family-slide-failsafe 0s 3s forwards}
@keyframes family-slide-failsafe{to{transform:translate3d(0,101%,0)}}
.family-group{--family-transition-logo:url('assets/our-adventures-logo.webp')}
.family-shanghai{--family-green:#193b76;--family-green-deep:#10264b;--family-gold:#ffae46;--family-cream:#f4f6f5;--family-ink:#162a44;--family-line:#d4d9df;--family-transition-logo:url('assets/our-shanghai-logo.webp')}
:where(.family-site) a:focus-visible,:where(.family-site) button:focus-visible,:where(.family-site) summary:focus-visible{outline:3px solid var(--family-gold);outline-offset:4px}
@media(max-width:1080px){.family-header-inner{gap:18px}.family-brand>span{display:none}.family-nav>ul{gap:19px}}
@media(max-width:900px){.family-header-inner{height:83px}.family-header.is-scrolled .family-header-inner{height:70px}.family-brand img{width:63px;height:63px}.family-header.is-scrolled .family-brand img{width:52px;height:52px}.family-nav{display:none;position:absolute;top:100%;left:0;right:0;height:auto;max-height:calc(100vh - 85px);overflow:auto;margin:0;padding:10px 24px 24px;background:var(--family-green);color:#fff;box-shadow:0 15px 20px #0003}.family-nav.is-open{display:block}.family-nav>ul{display:block;height:auto}.family-nav li{border-bottom:1px solid #ffffff25}.family-nav-heading{justify-content:space-between}.family-nav-heading>a{flex:1;font-size:16px}.family-submenu-toggle{width:42px}.family-submenu{position:static;min-width:0;border:0;box-shadow:none;padding:0 0 8px 13px;background:#15271e}.family-nav li:hover>.family-submenu,.family-nav li:focus-within>.family-submenu{display:none}.family-nav li.is-open>.family-submenu{display:block}.family-menu-toggle{display:block;margin-left:auto}.family-header-cta{min-height:40px;padding:10px 12px}.family-group .hero{padding-top:145px}.family-shanghai .hero-shell{padding-top:86px}.family-footer-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){body.family-site.admin-bar .family-header{top:46px}.family-wrap{width:calc(100% - 34px)}.family-header-inner{width:calc(100% - 30px);height:74px}.family-header.is-scrolled .family-header-inner{height:65px}.family-brand img{width:55px;height:55px}.family-header.is-scrolled .family-brand img{width:48px;height:48px}.family-header-cta{font-size:10px;white-space:normal;max-width:127px}.family-group .hero{padding-top:118px}.family-shanghai .hero-shell{padding-top:74px}.family-page-hero{padding:155px 0 65px}.family-page-content{padding-block:55px 75px}.family-post-grid{grid-template-columns:1fr}.family-footer-grid{grid-template-columns:1fr 1fr;gap:25px}.family-footer-bottom{display:block}.family-footer-bottom span{display:block;margin:4px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.page-transition-ready body::after{display:none}.motion-ready .family-home .reveal{opacity:1;transform:none}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
