/* Embedded dream cloud: generated by scripts/embed-dream-mask.mjs */
:root{--dream-cloud-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Cdefs%3E%3Cfilter%20id%3D%22mist%22%20x%3D%22-20%25%22%20y%3D%22-20%25%22%20width%3D%22140%25%22%20height%3D%22140%25%22%3E%3CfeGaussianBlur%20stdDeviation%3D%2225%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%0A%20%20%3Cpath%20fill%3D%22white%22%20filter%3D%22url(%23mist)%22%20d%3D%22M100%20205%20C123%2095%20243%20131%20304%2082%20C375%2025%20482%2094%20553%2065%20C668%2022%20716%20113%20814%20132%20C930%20154%20893%20262%20941%20346%20C983%20420%20919%20508%20941%20586%20C971%20700%20867%20724%20855%20807%20C835%20914%20717%20861%20637%20919%20C555%20971%20472%20909%20386%20930%20C271%20956%20243%20875%20161%20847%20C66%20813%20117%20718%2071%20635%20C19%20549%2089%20459%2059%20386%20C24%20294%2079%20285%20100%20205%20Z%22%2F%3E%0A%3C%2Fsvg%3E")}
.bridge-dreams{display:none}
/* Prevent a late WebGL layout expansion from anchoring a reload below the walk. */
body[data-direction=campus]{overflow-anchor:none}
[data-direction=campus].hero-world-ready:not(.motion-paused) .bridge-dreams:not([hidden]){display:block;position:absolute;inset:0;z-index:5;pointer-events:none;color:#193838;opacity:var(--dream-opacity,0)}
.dream-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at 18% 44%,#eedaff40,transparent 44%),linear-gradient(90deg,transparent 38%,#f5f9ff30 47%,#f5f9fff2 55%,#f8f5fffa);pointer-events:none}
.dream-tools{position:absolute;top:28px;right:4%;display:flex;gap:20px;align-items:center;font-size:14px;color:#55415b}
.dream-series{font-family:var(--serif);font-style:italic;font-size:21px}
.dream-language{pointer-events:auto;border:1px solid #82678760;border-radius:50%;width:44px;height:44px;background:#fffffff2;color:#403c51;font-size:14px}
.dream-copy{position:absolute;right:5%;top:50%;translate:0 calc(-50% + var(--dream-shift));width:min(420px,38%);padding:24px 0;transform:perspective(1200px) rotateY(var(--dream-turn));transform-origin:right center}
.dream-count{font-size:13px;letter-spacing:2px;color:#795b85;margin-bottom:24px;display:flex;gap:15px;align-items:center}
.dream-count:after{content:'';height:1px;flex:1;background:linear-gradient(90deg,#bda1c4,transparent)}
.dream-eyebrow{font-size:13px;line-height:1.5;letter-spacing:1.2px;color:#6b536f;margin:0 0 14px}
[data-direction=campus] .dream-copy h2{font-family:var(--serif);font-size:clamp(30px,3.6vw,54px);line-height:1.07;font-weight:400;letter-spacing:-1.5px;margin:0 0 22px}
.dream-copy h2 em{color:#835b91}
.dream-body p{font-size:16px;line-height:1.7;margin:12px 0;color:#304e50}
.dream-body strong{display:block;color:#795b85;font-size:13px;letter-spacing:.5px;margin-bottom:5px}
.dream-prelude{font-size:14px;color:#755a7c;line-height:1.4;margin:0 0 18px}
.dream-prelude br{display:none}
.dream-prelude:empty,.dream-tags:empty,.dream-note:empty{display:none}
.dream-tags{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:20px;font-size:13px;color:#6b536f}
.dream-tags span{padding-bottom:4px;border-bottom:1px solid #b9a7c7}
.dream-note{font-size:12px;line-height:1.5;color:#61717a;margin-top:20px}
.dream-enter{display:inline-block;pointer-events:auto;background:#3f3558;color:#fff;padding:12px 20px;border-radius:4px;margin-top:16px;font-size:16px}
.dream-enter[hidden]{display:none}
.dream-photo-fallback{position:absolute;left:6%;top:26%;width:32%;height:46%;margin:0;display:flex;flex-direction:column;align-items:center;transform:perspective(900px) rotateY(8deg) rotateZ(-3deg)}
.dream-photo-fallback img{width:100%;height:calc(100% - 36px);object-fit:contain;background:transparent;padding:0;filter:drop-shadow(0 12px 18px #30204026);border:0}
.dream-photo-fallback figcaption{font-size:12px;background:#fff9;padding:7px 10px;max-width:100%}
.dream-media-ready .dream-photo-fallback{opacity:0;pointer-events:none}
[data-direction=campus] .dream-active .walk-caption{background:#fcfff5cc;max-width:320px;padding:10px 16px}
[data-direction=campus] .dream-active .walk-caption p{font-size:14px;margin-top:4px}
[data-direction=campus] .dream-active .walk-controls{background:#f9f6ffff;border-color:#d6cde0}
[data-direction=campus].hero-world-ready:not(.motion-paused) .campus-walk{height:3200svh}
html[lang=zh-Hant] .dream-copy h2{font-family:var(--sans);font-size:clamp(28px,3vw,42px);line-height:1.35;letter-spacing:0}
@media(max-width:850px) and (min-width:651px){.dream-copy{right:4%;width:42%}.dream-body p{line-height:1.5}.dream-count{margin-bottom:15px}.dream-copy h2{margin-bottom:15px}}
@media(max-width:650px){
 [data-direction=campus].hero-world-ready:not(.motion-paused) .campus-walk{height:3800svh}
 .dream-vignette{background:linear-gradient(180deg,transparent 22%,#eff5ff20 37%,#f6f8ffec 49%,#f6f8ff 78%)}
 .dream-tools{top:18px;right:5%;gap:0}.dream-series{display:none}
 [data-direction=campus] .dream-active .walk-caption{top:18px;left:5%;right:70px;padding:8px 12px;max-width:none}
 [data-direction=campus] .dream-active .walk-caption .eyebrow{font-size:12px;letter-spacing:.5px}
 [data-direction=campus] .dream-active .walk-caption p{display:none}
 .dream-copy{top:auto;bottom:124px;left:6%;right:6%;width:auto;translate:0 var(--dream-shift);transform:none;padding:0;max-height:55%;overflow:auto;pointer-events:auto;scrollbar-width:thin;overscroll-behavior:auto}
 .dream-count{font-size:12px;margin-bottom:10px}.dream-eyebrow{font-size:12px;margin-bottom:7px;letter-spacing:.5px}
 [data-direction=campus] .dream-copy h2{font-size:31px;line-height:1.08;letter-spacing:-.8px;margin-bottom:12px}
 .dream-body p{font-size:16px;line-height:1.5;margin:8px 0}.dream-note{font-size:12px;margin-top:9px}.dream-tags{margin-top:10px;font-size:12px}.dream-prelude{margin-bottom:10px;font-size:13px}
 .dream-photo-fallback{left:7%;top:11%;height:27%;width:42%}.dream-photo-fallback figcaption{display:none}
 html[lang=zh-Hant] .dream-copy h2{font-size:28px;line-height:1.25}
}
@media(max-height:700px) and (min-width:651px){.dream-copy{top:51%;max-height:66%;overflow:auto;pointer-events:auto}.dream-count{margin-bottom:12px}.dream-body p{line-height:1.5}.dream-copy h2{font-size:32px!important;margin-bottom:12px!important}.dream-note{margin-top:10px}}
@media(prefers-reduced-motion:reduce){.bridge-dreams{display:none!important}}

/* Local films dissolve into the walking scene, without a player frame. */
.memory-film{position:absolute;inset:0;margin:0;pointer-events:none}
.memory-film[hidden]{display:none}
.memory-images{position:absolute;left:1%;top:46%;width:min(52%,calc(58svh * var(--memory-aspect,1.7778)));height:auto;aspect-ratio:var(--memory-aspect,1.7778);translate:0 -50%;perspective:1100px;transform:rotateY(var(--dream-turn,0deg)) rotateZ(-1deg)}
.memory-video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;background:transparent;border:0;opacity:0;transform:scale(1.035) translateY(8px);filter:saturate(.87) contrast(.96) brightness(1.055) blur(5px);transition:opacity .9s ease,filter 1.2s ease,transform 5s ease-out;
 mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent),linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);mask-composite:intersect;
 -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent),linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);-webkit-mask-composite:source-in}
.memory-video.is-visible{opacity:.94;transform:scale(1) translateY(0);filter:saturate(.87) contrast(.96) brightness(1.055) blur(0)}
.memory-film[data-portrait=true] .memory-images{left:9%;width:min(35%,calc(58svh * var(--memory-aspect,.5625)));top:43%}
@media(min-width:651px){
  .memory-film[data-clip="skiing-return-smile"] .memory-images{top:46%;width:min(35%,calc(50svh * var(--memory-aspect,.5625)));transform:none}
  .memory-film[data-clip="piano-puppy-kiss"] .memory-images{top:46%;width:min(39%,calc(50svh * var(--memory-aspect,.75)));transform:none}
}
.memory-caption{position:absolute;left:7%;bottom:135px;width:40%;display:grid;gap:10px;font-size:14px;line-height:1.4;color:#193c40;text-shadow:0 0 5px #fff,0 0 14px #fff}
.memory-caption:before{content:'';position:absolute;inset:-16px;z-index:-1;background:radial-gradient(ellipse,#f7f9f5e6 30%,transparent 76%);filter:blur(8px)}
.memory-actions{display:flex;gap:18px;flex-wrap:wrap}
.memory-actions button{pointer-events:auto;background:none;border:0;border-bottom:1px solid #61717a55;border-radius:0;padding:0 0 3px;font:inherit;font-size:12px;color:#3b5358;cursor:pointer}
.memory-actions button:hover{color:#72488b;border-color:currentColor}
.memory-actions button:focus-visible{outline:2px solid #835b91;outline-offset:5px}
.memory-film[data-state=loading] .memory-caption{visibility:hidden}
.dream-video-active .dream-photo-fallback{visibility:hidden}
.portfolio-video-links{display:flex;flex-wrap:wrap;gap:9px 16px;margin-top:20px;font-size:14px;line-height:1.5}
.portfolio-video-links:empty{display:none}
.portfolio-video-links a{text-decoration:underline;text-underline-offset:4px;color:inherit}
@media(max-width:650px){
 .memory-images,.memory-film[data-portrait=true] .memory-images{left:50%;top:76px;width:min(96%,calc(31svh * var(--memory-aspect,1.7778)),calc(260px * var(--memory-aspect,1.7778)));height:auto;translate:-50% 0;transform:rotateZ(-1deg)}
 .memory-caption{left:6%;width:88%;top:calc(76px + min(31svh,260px) + 4px);bottom:auto;font-size:12px;gap:7px}
 .memory-actions{gap:18px}.memory-actions button{font-size:12px}
 .memory-visible .dream-copy{top:calc(76px + min(31svh,260px) + 65px);bottom:124px;max-height:none;overflow:auto}
 .memory-visible .dream-prelude{display:none}
}
@media(max-height:650px) and (min-width:651px){.memory-images{top:45%}.memory-caption{bottom:115px;font-size:12px}}

.award-gallery{padding:70px 0 20px;border-top:1px solid #cbd9d0;margin-top:50px}
.award-gallery-title{font-family:var(--serif);font-size:clamp(30px,3.2vw,44px);font-weight:400;line-height:1.2;margin:12px 0 36px}
.award-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px}
.award-moment{min-width:0}
.award-moment img{display:block;width:100%;height:280px;object-fit:contain;object-position:center bottom;margin-bottom:24px;filter:drop-shadow(0 12px 18px #19383816)}
.award-moment img.pool-photo{width:min(100%,210px);height:auto;aspect-ratio:3/4;margin-inline:auto;filter:none;border:0;padding:0}
.environment-photo img,img.pool-photo{mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent),linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent);mask-composite:intersect;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent),linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-composite:source-in}
.dream-photo-fallback.environment-photo img{width:100%;height:100%;max-width:100%;filter:none;border:0;padding:0}
.dream-photo-fallback.environment-photo figcaption{display:none}
.portfolio-photo-moment img.pool-photo{width:100%;height:280px;aspect-ratio:auto;object-position:center}
.award-moment .eyebrow{font-size:11px;letter-spacing:.8px;line-height:1.5;color:#6b536f}
.award-moment h4{font-family:var(--serif);font-size:27px;line-height:1.15;font-weight:400;margin:12px 0 16px}
.award-moment h4 em{color:#65815c}
.award-moment>p:last-child{font-size:15px;line-height:1.7;color:#4b6363}
html[lang=zh-Hant] .award-moment h4{font-family:var(--sans);font-size:23px;line-height:1.4}
@media(max-width:1000px){.award-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:45px 28px}}
@media(max-width:520px){.award-gallery{padding-top:45px}.award-grid{grid-template-columns:1fr;gap:44px}.award-moment img{height:300px}.award-moment img.pool-photo{width:min(100%,225px);height:auto}}
@media(max-width:650px){
 .feature-photo-visible:not(.memory-visible) .dream-copy{top:calc(76px + min(32svh,270px) + 18px);bottom:124px;max-height:none}
 .feature-photo-visible .dream-photo-fallback{left:6%;top:76px;width:88%;height:min(32svh,270px);transform:none}
.feature-photo-visible .dream-photo-fallback img{height:100%}
}

/* Memories dissolve into an uneven cloud instead of ending at a photo box.
   This also covers the readable gallery and the still-image fallback. */
.dream-photo-fallback img,.award-moment img,.portrait img,.interest-panel img{
 mask-image:var(--dream-cloud-mask);mask-size:100% 100%;mask-repeat:no-repeat;
 -webkit-mask-image:var(--dream-cloud-mask);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;
 border:0;border-radius:0;box-shadow:none;filter:none;
 animation:none;
 transform-origin:50% 56%;
}
.dream-photo-fallback figcaption{background:transparent}
.dream-photo-fallback{justify-content:center}
.dream-photo-fallback img,.dream-photo-fallback.environment-photo img{
 width:auto;height:auto;max-width:100%;max-height:100%;flex:none;object-fit:contain;
}
.dream-photo-fallback figcaption{display:none}
.portrait{background:transparent!important;padding:0;box-shadow:none;transform:none}
.portrait img{height:auto;object-fit:contain}
.portrait figcaption{padding-inline:7%}
.interest-panel img{border:0!important;border-radius:0!important;box-shadow:none!important;object-fit:contain;width:auto;height:auto;max-height:420px;max-width:100%;margin-inline:auto}
.memory-still{height:280px;display:flex;align-items:center;justify-content:center;margin:0 0 24px}
.award-moment .memory-still img{width:auto;height:auto;max-width:100%;max-height:100%;margin:0;aspect-ratio:auto;object-fit:contain}
.dream-photo-fallback.environment-photo img,img.pool-photo{
 mask-image:var(--dream-cloud-mask);-webkit-mask-image:var(--dream-cloud-mask);
 mask-composite:add;-webkit-mask-composite:source-over;
}
.memory-video{
 mask-image:var(--dream-cloud-mask);mask-size:100% 100%;mask-repeat:no-repeat;mask-composite:add;
 -webkit-mask-image:var(--dream-cloud-mask);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-composite:source-over;
}
/* Keep the presenter fully opaque while the surrounding slide fades into mist.
   The mask is the union of the cloud and a soft safe area around the whole head. */
.memory-video[data-presenter=true],.memory-video[data-clear-area=true]{
 --presenter-safe-area:radial-gradient(ellipse var(--presenter-radiusX) var(--presenter-radiusY) at var(--presenter-x) var(--presenter-y),#000 84%,transparent 100%);
 mask-image:var(--presenter-safe-area),var(--dream-cloud-mask);mask-composite:add;
 -webkit-mask-image:var(--presenter-safe-area),var(--dream-cloud-mask);-webkit-mask-composite:source-over;
 transform:none;filter:none;
}
.memory-video[data-presenter=true].is-visible,.memory-video[data-clear-area=true].is-visible{opacity:1;transform:none;filter:none}
.dream-photo-fallback.silhouette-photo img{
 mask-image:var(--photo-silhouette);-webkit-mask-image:var(--photo-silhouette);
 mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-composite:add;-webkit-mask-composite:source-over;
}
.dream-photo-fallback img.protected-head-photo,.award-moment img.protected-head-photo{
 mask-image:var(--photo-head-safe),var(--dream-cloud-mask);mask-composite:add;
 -webkit-mask-image:var(--photo-head-safe),var(--dream-cloud-mask);-webkit-mask-composite:source-over;
}
.memory-film[data-presentation=true] .memory-images{transform:none}
.motion-paused .dream-photo-fallback img,.motion-paused .award-moment img,
.motion-paused .portrait img,.motion-paused .interest-panel img{animation-play-state:paused}
@media(max-width:650px){
 .memory-still{height:300px}
 .feature-photo-visible .dream-photo-fallback img{height:auto;max-height:100%}
}
@media(prefers-reduced-motion:reduce){
 .dream-photo-fallback img,.award-moment img,.portrait img,.interest-panel img{animation:none}
}

