/* BFE hero. All selectors and assets are local to this section. */
@font-face{font-family:BFE Uni;src:url('assets/fonts/uni-sans-heavy.woff') format('woff');font-weight:700 950;font-style:normal;font-display:swap}
@font-face{font-family:BFE TC;src:url('assets/fonts/noto-sans-tc-home.woff') format('woff');font-weight:100 900;font-style:normal;font-display:swap}
.bfe-hero{--bfe-ink:#0a0a0e;--bfe-soft:rgba(10,10,14,.7);--hero-wash:linear-gradient(100deg,#fff 0%,#fff 34%,rgba(255,255,255,.74) 60%,rgba(255,0,151,.22) 100%);--bfe-edge-tilt:-4.2891533deg;--bfe-edge-travel-y:-21px;--bfe-tilt:-7.5deg;--bfe-travel-x:280px;--bfe-travel-y:-36.8626993px;--bfe-accent:#ff0097;--bfe-accent-dark:#c4008a;--bfe-ground:#fffaf7;--bfe-gutter:clamp(32px,5vw,88px);--sc-p:0;color:var(--bfe-ink);background:var(--bfe-ground);font-family:BFE TC,'Noto Sans TC',system-ui,sans-serif;isolation:isolate;position:relative;color-scheme:light;text-align:left;-webkit-font-smoothing:antialiased}
.bfe-hero *,.bfe-hero *::before,.bfe-hero *::after{box-sizing:border-box}
.bfe-hero :is(h1,p,figure){margin:0}
.bfe-hero-track{height:200vh;view-timeline-name:--bfe-takeover;view-timeline-axis:block;position:relative}
.bfe-hero .bfe-stage{position:sticky;top:0;height:100vh;min-height:660px;overflow:clip;isolation:isolate;background:var(--bfe-ground);clip-path:polygon(0 0,100% 0,100% calc(100% - 7.5vw),0 100%)}
/* Live photo stack: primary photo, university photo, exact live light wash, faint pink aurora. */
.bfe-photo,.bfe-wash{position:absolute;inset:0;pointer-events:none;z-index:-4}
.bfe-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center bottom;filter:saturate(.7) contrast(.94) brightness(1.08)}
.bfe-photo-uni{z-index:-3;opacity:.22}
.bfe-wash{z-index:-2;background:var(--hero-wash)}
.bfe-atmosphere-plane{position:absolute;inset:-8%;pointer-events:none;z-index:-1;opacity:calc(1 - var(--sc-p)*.7);transform:translate3d(0,calc(var(--sc-p)*-42px),0);animation:bfe-fade 1.1s both}
.bfe-aurora{width:100%;height:100%;opacity:.025;filter:blur(26px);mix-blend-mode:normal}
.bfe-orb{position:absolute;width:36%;height:42%;border-radius:50%;filter:blur(36px);background:radial-gradient(ellipse,#ff0097,transparent 65%);opacity:.008}
.bfe-orb-1{left:14%;top:4%}.bfe-orb-2{right:6%;top:36%;background:radial-gradient(ellipse,#8d6980,transparent 65%);opacity:.008}.bfe-orb-3{left:36%;bottom:0;width:65%;background:radial-gradient(ellipse,#796c75,transparent 65%)}
.bfe-heading{position:absolute;z-index:4;top:14%;left:var(--bfe-gutter);width:40%;transform-origin:top left;transform:translate3d(0,calc(var(--sc-p)*-74px),0) scale(calc(1 - var(--sc-p)*.15))}
.bfe-eyebrow{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:650;letter-spacing:.12em;color:var(--bfe-soft);margin-bottom:25px!important;transform:rotate(var(--bfe-tilt));transform-origin:left center}
.bfe-eyebrow>span{width:7px;height:7px;border-radius:50%;background:var(--bfe-accent)}
.bfe-hero h1{font-family:BFE TC,'Noto Sans TC',sans-serif;font-size:clamp(64px,6.65vw,100px);font-weight:900;line-height:1.12;letter-spacing:-.04em;color:var(--bfe-ink)}
.bfe-line{display:block;width:max-content;animation:bfe-land .72s cubic-bezier(.23,1,.32,1) both;animation-delay:120ms}
.bfe-line:nth-child(2){animation-delay:240ms}.bfe-line:nth-child(3){animation-delay:360ms}
/* Paper veils protect the copy even as photos travel underneath. */
.bfe-heading::before,.bfe-support::before{content:"";position:absolute;inset:-18% -22%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 60% 55% at 50% 50%,rgba(255,255,255,.42) 0%,rgba(255,255,255,.26) 40%,rgba(255,255,255,0) 72%);box-shadow:none;border-radius:50%}
/* The same live text supplies the magenta stroke and the knockout. */
.bfe-outline{position:relative;color:var(--bfe-accent)}
.bfe-outline-label{color:transparent}
.bfe-outline-art{position:absolute;inset:0;width:100%;height:100%;overflow:visible;font:inherit;letter-spacing:inherit}
.bfe-outline-edge{fill:none;stroke:var(--bfe-accent);stroke-width:3px;paint-order:stroke;stroke-linejoin:round}
.bfe-english{position:absolute;inset:0;z-index:1;pointer-events:none;font-family:BFE Uni,sans-serif;font-weight:900;transform:translate3d(0,calc(var(--sc-p)*-112px),0);animation:bfe-fade 1.1s .25s both}
.bfe-wordmark-plane{position:absolute;inset:0;transform:rotate(var(--bfe-tilt));transform-origin:50% 50%;font-style:normal}
.bfe-go{position:absolute;top:8%;left:45%;font-size:clamp(100px,13.7vw,210px);line-height:1;letter-spacing:-.045em;white-space:nowrap;color:var(--bfe-ink)}
.bfe-back{position:absolute;top:calc(8% + clamp(100px,13.7vw,210px));left:45%;font-size:clamp(30px,4vw,64px);letter-spacing:-.025em;line-height:1;white-space:nowrap}
.bfe-go,.bfe-back{background:transparent;box-shadow:none;text-shadow:0 0 18px rgba(255,255,255,.55),0 0 42px rgba(255,255,255,.35)}
.bfe-back{color:var(--bfe-accent)}
.bfe-students{position:absolute;inset:0;z-index:2;pointer-events:none;mask-image:linear-gradient(90deg,rgba(0,0,0,.18),rgba(0,0,0,.25) 32%,#000 49%)}
.bfe-band{position:absolute;width:170%;left:-35%;will-change:transform}
.bfe-band-1{top:39%;transform:translate3d(calc(var(--sc-p)*var(--bfe-travel-x)),calc(var(--sc-p)*var(--bfe-travel-y)),0)}
.bfe-band-2{top:72%;transform:translate3d(calc(var(--sc-p)*var(--bfe-travel-x)*-1),calc(var(--sc-p)*var(--bfe-edge-travel-y)*-1),0)}
/* atan(.075) aligns the lower tape to the exact live 7.5vw cut. */
.bfe-band-2 .bfe-band-angle{transform:rotate(var(--bfe-edge-tilt))}
.bfe-band-angle{transform:rotate(var(--bfe-tilt));transform-origin:50% 50%}

.bfe-velocity{will-change:transform;transform:skewX(var(--bfe-skew,0deg))}
.bfe-marquee{display:flex;width:max-content;will-change:transform;animation:bfe-tape-reverse 190s linear infinite}
.bfe-band-2 .bfe-marquee{animation-name:bfe-tape;animation-duration:215s}
.bfe-tape-set{display:flex;flex-shrink:0;gap:20px;padding:14px 20px 24px 0}
.bfe-tile{width:224px;flex:0 0 224px;animation:bfe-fly .9s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--bfe-i,0)*45ms)}
.bfe-band-2 .bfe-tile{--bfe-entry:-160px}
.bfe-tile:nth-child(6n+1){--bfe-i:0}.bfe-tile:nth-child(6n+2){--bfe-i:1}.bfe-tile:nth-child(6n+3){--bfe-i:2}.bfe-tile:nth-child(6n+4){--bfe-i:3}.bfe-tile:nth-child(6n+5){--bfe-i:4}.bfe-tile:nth-child(6n){--bfe-i:5}
.bfe-polaroid{padding:6px 6px 0;background:#fff;box-shadow:0 10px 24px rgba(10,10,14,.16);transform:rotate(2deg);color:#26222a}
.bfe-tile:nth-child(3n) .bfe-polaroid{transform:rotate(-3deg)}.bfe-tile:nth-child(5n) .bfe-polaroid{transform:rotate(2.5deg)}
.bfe-polaroid img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover}
.bfe-polaroid figcaption{height:29px;display:flex;align-items:center;justify-content:center;font-family:'Bradley Hand','Segoe Print','Comic Sans MS',cursive;font-style:italic;font-size:14px;font-weight:600;white-space:nowrap;letter-spacing:.02em}
.bfe-support{position:absolute;left:var(--bfe-gutter);bottom:13%;z-index:5}
.bfe-description{font-size:17px;line-height:1.85;color:var(--bfe-soft)}
.bfe-actions{display:flex;align-items:center;gap:24px;margin-top:26px;transform:rotate(var(--bfe-tilt));transform-origin:left center}
.bfe-hero :is(a,button){-webkit-tap-highlight-color:transparent}
.bfe-hero a{color:inherit;text-decoration:none}
.bfe-button{display:inline-flex;align-items:center;gap:32px;background:var(--bfe-accent);color:var(--bfe-ink)!important;transform:skewX(-8deg);padding:17px 22px;min-height:54px;white-space:nowrap;font-size:16px;font-weight:800;transition:transform .16s,background .16s}
.bfe-button-label{display:inline-flex;align-items:center;gap:inherit;transform:skewX(8deg)}
.bfe-text-link{display:inline-flex;border:1px solid var(--bfe-ink);padding:12px 16px;gap:16px;align-items:center;min-height:48px;font-size:14px;font-weight:650;text-decoration:none!important}
.bfe-hero :is(a,button):focus-visible{outline:3px solid var(--bfe-ink);outline-offset:5px}
.bfe-hero :is(a,button):active{transform:translateY(2px)}
.bfe-photo-note{position:absolute;right:var(--bfe-gutter);bottom:calc(7.5vw + 24px);padding:5px 8px;background:rgba(255,255,255,.96);z-index:4;font-size:12px;letter-spacing:.14em;color:var(--bfe-soft);transform:rotate(var(--bfe-tilt));transform-origin:right center}
.bfe-motion-toggle{position:absolute;left:var(--bfe-gutter);bottom:4%;z-index:6;background:rgba(255,255,255,.96);border:1px solid var(--bfe-soft);padding:8px 12px;min-height:36px;color:var(--bfe-soft);font:inherit;font-size:11px;cursor:pointer}
.bfe-grain{position:absolute;inset:-3%;z-index:0;pointer-events:none;opacity:.018;background:url('assets/grain.svg');transform:translate3d(0,calc(var(--sc-p)*12px),0)}
@keyframes bfe-tape{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
@keyframes bfe-tape-reverse{from{transform:translate3d(-50%,0,0)}to{transform:translate3d(0,0,0)}}
@keyframes bfe-fly{from{opacity:0;transform:translate3d(var(--bfe-entry,160px),0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes bfe-land{from{clip-path:inset(100% 0 0);transform:translate3d(0,32px,0)}to{clip-path:inset(-5px);transform:translate3d(0,0,0)}}
@keyframes bfe-fade{from{opacity:0}to{opacity:1}}
@keyframes bfe-dim{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:.3;transform:translate3d(0,-42px,0)}}
@keyframes bfe-compress{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(0,-74px,0) scale(.85)}}
@keyframes bfe-english-travel{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-112px,0)}}
@keyframes bfe-separate-up{from{transform:translate3d(0,0,0)}to{transform:translate3d(var(--bfe-travel-x),var(--bfe-travel-y),0)}}
@keyframes bfe-separate-down{from{transform:translate3d(0,0,0)}to{transform:translate3d(calc(var(--bfe-travel-x)*-1),calc(var(--bfe-edge-travel-y)*-1),0)}}
@supports(animation-timeline:view()){
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) .bfe-atmosphere-plane{animation:bfe-dim linear both}
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) .bfe-heading{animation:bfe-compress linear both}
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) .bfe-english{animation:bfe-english-travel linear both}
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) .bfe-band-1{animation:bfe-separate-up linear both}
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) .bfe-band-2{animation:bfe-separate-down linear both}
 .bfe-hero.bfe-enhanced:not(.bfe-fallback):not(.bfe-reduced) :is(.bfe-atmosphere-plane,.bfe-heading,.bfe-english,.bfe-band){animation-timeline:--bfe-takeover;animation-range:contain 0% contain 100%}
}
@media(hover:hover) and (pointer:fine){.bfe-button:hover{background:#ff49b5;transform:translateY(-2px) skewX(-8deg);box-shadow:0 3px 0 var(--bfe-accent-dark)}.bfe-text-link:hover{background:rgba(10,10,14,.06)}.bfe-motion-toggle:hover{color:var(--bfe-ink);border-color:var(--bfe-ink)}}
@media(min-width:761px) and (max-height:760px){.bfe-heading{top:8%}.bfe-hero h1{font-size:76px}.bfe-support{bottom:11%}.bfe-description{font-size:15px}.bfe-actions{margin-top:15px}.bfe-tile{width:190px;flex-basis:190px}.bfe-go{font-size:148px;top:5%}.bfe-back{top:calc(5% + 148px);font-size:40px}.bfe-photo-note{display:none}}
@media(max-width:1000px) and (min-width:761px){.bfe-actions{gap:12px}.bfe-button{padding:14px 16px;gap:12px;font-size:14px}.bfe-text-link{font-size:12px;gap:7px;padding:11px 10px}.bfe-hero h1{font-size:66px}.bfe-description{font-size:15px}.bfe-support{bottom:15%}}
@media(max-width:760px){
 .bfe-hero{--bfe-gutter:24px;--bfe-travel-x:100px;--bfe-travel-y:-13.1652498px}.bfe-hero .bfe-stage{min-height:640px}
 .bfe-heading{top:7%;width:calc(100% - 48px);transform:translate3d(0,calc(var(--sc-p)*-24px),0) scale(calc(1 - var(--sc-p)*.1))}
 .bfe-eyebrow{font-size:12px;letter-spacing:.09em;margin-bottom:17px!important}
 .bfe-hero h1{font-size:clamp(34px,9.4vw,42px);line-height:1.15;letter-spacing:-.055em}
 .bfe-line:nth-child(2),.bfe-line:nth-child(3){display:block}.bfe-outline-edge{stroke-width:2px}
 .bfe-english{transform:translate3d(0,calc(var(--sc-p)*-60px),0)}
 .bfe-wordmark-plane{transform-origin:50% 34%}
 .bfe-go{left:24px;top:29%;font-size:clamp(75px,22vw,100px);color:var(--bfe-ink);line-height:.95}
 .bfe-back{left:auto;right:24px;top:calc(29% + 78px);bottom:auto;font-size:21px;letter-spacing:0}
 .bfe-students{inset:0;mask-image:none}.bfe-band-1{top:44%}.bfe-band-2{display:none}
 .bfe-tile{width:168px;flex-basis:168px}.bfe-tape-set{gap:14px;padding-right:14px}.bfe-polaroid{padding:5px 5px 0}.bfe-polaroid figcaption{height:25px;font-size:11px}
 .bfe-support{left:24px;right:24px;bottom:8%}.bfe-description{font-size:14px;line-height:1.8}.bfe-actions{gap:15px;justify-content:space-between;margin-top:18px}
 .bfe-button{padding:13px 14px;min-height:49px;gap:12px;font-size:13px}.bfe-text-link{font-size:12px;gap:7px;padding:11px 10px}
 .bfe-photo-note{display:none}.bfe-motion-toggle{left:24px;right:auto;bottom:14px;min-height:32px;padding:5px 9px;font-size:10px}
 .bfe-aurora{filter:blur(18px);opacity:.025}.bfe-orb{filter:blur(24px)}
 @keyframes bfe-compress{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(0,-24px,0) scale(.9)}}
 @keyframes bfe-english-travel{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-60px,0)}}

}
@media(max-width:760px) and (max-height:720px){.bfe-heading{top:5%}.bfe-eyebrow{margin-bottom:12px!important}.bfe-go{top:29%;font-size:74px}.bfe-back{top:calc(29% + 64px);font-size:19px}.bfe-band-1{top:42%}.bfe-tile{width:146px;flex-basis:146px}.bfe-polaroid figcaption{font-size:10px;height:24px}.bfe-support{bottom:8%}.bfe-description{font-size:12px;line-height:1.7}.bfe-actions{margin-top:12px}.bfe-button{min-height:46px;padding:11px 13px}.bfe-text-link{font-size:11px}}
/* All animation controls are scoped, including tab visibility and an explicit pause. */
.bfe-hero.bfe-paused *,.bfe-hero.bfe-paused *::before,.bfe-hero.bfe-paused *::after{animation-play-state:paused!important}
.bfe-hero.bfe-reduced .bfe-hero-track{height:100vh!important}
.bfe-hero.bfe-reduced :is(.bfe-atmosphere-plane,.bfe-heading,.bfe-english,.bfe-band,.bfe-grain,.bfe-velocity){transform:none!important;animation:none!important}
.bfe-hero.bfe-reduced .bfe-marquee{animation:none!important;transform:none!important}
.bfe-hero.bfe-reduced :is(.bfe-line,.bfe-tile){animation:bfe-fade .4s both;transform:none;clip-path:none}
@media(prefers-reduced-motion:reduce){
 .bfe-hero .bfe-hero-track{height:100vh!important}
 .bfe-hero :is(.bfe-atmosphere-plane,.bfe-heading,.bfe-english,.bfe-band,.bfe-grain,.bfe-velocity){transform:none!important;animation:none!important}
 .bfe-hero .bfe-marquee{animation:none!important;transform:none!important}
 .bfe-hero :is(.bfe-line,.bfe-tile){animation:bfe-fade .4s both;transform:none;clip-path:none}
}
.bfe-aurora{animation:bfe-fade 1.1s both}.bfe-go,.bfe-back{animation:bfe-fade 1s .3s both}
.bfe-motion-toggle:disabled{cursor:default;opacity:.7}

.bfe-hero:not(.bfe-enhanced) .bfe-motion-toggle{display:none}
.bfe-hero:not(.bfe-enhanced) .bfe-hero-track{height:100vh}
.bfe-hero:not(.bfe-enhanced) .bfe-marquee{animation:none}
@keyframes bfe-aurora-in{from{opacity:0}to{opacity:var(--bfe-aurora-alpha,.025)}}
.bfe-aurora{animation-name:bfe-aurora-in}
@media(max-width:760px){.bfe-aurora{--bfe-aurora-alpha:.025}}

.bfe-hero .bfe-button:active{transform:translateY(2px) skewX(-8deg)}

/* Dark mode: follows the site's html[data-theme] (set pre-paint from localStorage or the OS scheme). Photos and polaroid frames stay as they are; wash, type, veils and chrome flip. */
html[data-theme=dark] .bfe-hero{--bfe-ink:#fbfaf9;--bfe-soft:rgba(251,250,249,.72);--bfe-ground:#0a0a0e;--hero-wash:linear-gradient(100deg,#0a0a0e 0%,#0a0a0e 36%,rgba(10,10,14,.66) 62%,rgba(255,0,151,.30) 100%);color-scheme:dark}
html[data-theme=dark] .bfe-heading::before,html[data-theme=dark] .bfe-support::before{background:radial-gradient(ellipse 60% 55% at 50% 50%,rgba(10,10,14,.5) 0%,rgba(10,10,14,.32) 40%,rgba(10,10,14,0) 72%)}
html[data-theme=dark] .bfe-go,html[data-theme=dark] .bfe-back{text-shadow:0 0 18px rgba(10,10,14,.6),0 0 42px rgba(10,10,14,.4)}
html[data-theme=dark] .bfe-photo-note,html[data-theme=dark] .bfe-motion-toggle{background:rgba(10,10,14,.82);color:var(--bfe-soft);border-color:rgba(251,250,249,.35)}
html[data-theme=dark] .bfe-outline-edge{stroke:var(--bfe-accent)}
